-
Notifications
You must be signed in to change notification settings - Fork 0
/
craco-ckeditor-plugin.js
54 lines (50 loc) · 1.65 KB
/
craco-ckeditor-plugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-var-requires */
const { assetModuleByName, addBeforeAssetModule, loaderByName, getAssetModule, getLoader } = require('@craco/craco');
const { styles } = require('@ckeditor/ckeditor5-dev-utils');
module.exports = {
overrideWebpackConfig: ({ webpackConfig, cracoConfig, pluginOptions, context: { env, paths } }) => {
if (pluginOptions.preText) {
console.log(pluginOptions.preText);
}
// eslint-disable-next-line no-prototype-builtins
const rule = ix = webpackConfig.module.rules.find((item) => item.hasOwnProperty('oneOf'));
const assetModules = [
{
test: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
use: ['raw-loader'],
},
{
test: /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css$/,
use: [
{
loader: 'style-loader',
options: {
injectType: 'singletonStyleTag',
attributes: {
'data-cke': true,
},
},
},
'css-loader',
{
loader: 'postcss-loader',
options: {
postcssOptions: styles.getPostCssConfig({
themeImporter: {
themePath: require.resolve('@ckeditor/ckeditor5-theme-lark'),
},
minify: true,
}),
},
},
],
},
];
assetModules.forEach((assetModule) => {
rule.oneOf = [assetModule, ...rule.oneOf];
//addBeforeAssetModule(webpackConfig, assetModuleByName('file-loader'), assetModule);
});
return webpackConfig;
},
};