如何使用Webpack使Jodit使用Ace的捆绑版本

时间:2019-07-01 15:53:30

标签: webpack ace-editor jodit

我已经在Web应用程序中将Ace与Webpack一起使用。我也成功地将Jodit添加到Web应用程序。

不幸的是,Jodit尝试使用一些自定义脚本加载机制来动态加载其自己的Ace实例。

Jodit开发人员建议将Ace URL更改为./node_modules/ace-builds/src-min/ace.jshttps://github.com/xdan/jodit/issues/48#issuecomment-387067777) 但这当然不使用Webpack捆绑的Ace副本。

尽管Jodit和两个Ace实例都可以工作,但最好不要有两个不同的Ace实例。

我可以以某种方式将Jodit配置为使用捆绑版本的Ace而不是加载其自己的副本吗?

1 个答案:

答案 0 :(得分:0)

在挖掘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使用捆绑的库,而不是第二次导入它。