После некоторого поиска в источнике 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 использует связанную библиотеку вместо того, чтобы импортировать ее во второй раз.