Как заставить Jodit использовать пакетную версию Ace с помощью Webpack - PullRequest
0 голосов
/ 01 июля 2019

Я уже использую Ace с Webpack в веб-приложении. Я также успешно добавил Jodit в веб-приложение.

К сожалению, Jodit пытается динамически загрузить свой собственный экземпляр Ace, используя какой-то собственный механизм загрузки скриптов.

Разработчик Jodit рекомендует изменить URL-адрес Ace на ./node_modules/ace-builds/src-min/ace.js (https://github.com/xdan/jodit/issues/48#issuecomment-387067777) Но, конечно, здесь не используется копия Ace, входящая в комплект поставки Webpack.

Хотя Jodit и оба экземпляра Ace работают, было бы неплохо не иметь два разных экземпляра Ace.

Могу ли я как-то настроить Jodit для использования встроенной версии Ace вместо загрузки собственной копии?

1 Ответ

0 голосов
/ 02 июля 2019

После некоторого поиска в источнике Jodit это было довольно легко. Jodit забирает связанные библиотеки, когда они доступны в глобальном объекте.

После добавления этих строк Jodit больше не пытается динамически загрузить Ace, а также сам Ace может найти свой режим и тему:

require('ace-builds/src-noconflict/ace')
require('ace-builds/src-noconflict/theme-idle_fingers') // Default theme used by Jodit
require('ace-builds/src-noconflict/mode-html')
// ...
new Jodit(el) // No additional libraries will be loaded.

Чтобы использовать собственную тему, это также работает:

require('ace-builds/src-noconflict/ace')
require('ace-builds/src-noconflict/theme-sqlserver')
require('ace-builds/src-noconflict/mode-html')
// ...
new Jodit(el, { sourceEditorNativeOptions: { theme: 'ace/theme/sqlserver' } })

PS: Это работает и для js-beautify:

window.html_beautify = require('js-beautify').html_beautify

После этого Jodit использует связанную библиотеку вместо того, чтобы импортировать ее во второй раз.

...