我使用imports-loader、exports-loader和copy-webpack-plugin,在我的基于Angular 2/TypeScript的项目中成功集成了tinyMCE。
首先确保必要的依赖项可用,并且已包含在您项目的packages.json文件中:
npm i tinymce --save
npm i exports-loader --save-dev
npm i imports-loader --save-dev
npm i copy-webpack-plugin --save-dev
然后在你的Webpack配置文件的loaders部分中添加必要的加载器:
loaders: [
{
test: require.resolve('tinymce/tinymce'),
loaders: [
'imports?this=>window',
'exports?window.tinymce'
]
},
{
test: /tinymce\/(themes|plugins)\//,
loaders: [
'imports?this=>window'
]
}]
为了在Webpack配置中使用copyWebpackPlugin,请在Webpack配置文件的头部导入它:
var copyWebpackPlugin = require('copy-webpack-plugin')
同时,正如Petri Ryhänen所评论的那样,在你的webpack配置文件的plugins部分添加以下条目:
plugins: [
new copyWebpackPlugin([
{ from: './node_modules/tinymce/plugins', to: './plugins' },
{ from: './node_modules/tinymce/themes', to: './themes' },
{ from: './node_modules/tinymce/skins', to: './skins' }
])
]
这一步确保了TinyMCE所需的插件在您的webpack中也可用。
最后,在您的Angular 2组件文件中导入TinyMCE,请添加:
require('tinymce')
declare var tinymce: any;
转到导入部分,tinyMCE即可使用。
require('tinymce')
的文件中Cannot resolve module 'imports'
。我已经安装了imports-loader
,所以我不确定还有什么其他问题。 - Rob Johansenimports-loader?window=>{}!exports-loader?window.tinyMCE![dist]
- Alexandre Kirszenbergimports-loader
的完整名称有效:tinymce: 'imports-loader?window=>{}!exports?window.tinymce!tinymce/tinymce.js'
。 - Rob Johanseninit()
方法)。我该如何告诉webpack将tinymce作为对象导入并保留其所有方法? - Rob Johansenresolve.alias
支持加载器,但它们似乎不支持(见这个问题)。我的先前建议导致客户端需要imports-loader
而非 tinymce。我已经编辑了我的回答。 - Alexandre Kirszenberg