CKEditor5 와 babel-loader 호환 에러
리액트로 학과 게시판을 만들고 있었는데 자고 일어나니....
띠용? 내용을 입력하는 칸이 사라져버렸다
콘솔을 보았다
아이콘이 문제란다 여기 아이콘 안들어가는데;;
구글에 검색해보았다
웹팩이 문제란다 이렇게 하란다
const filesRuleIndex = cfg.module.rules.findIndex(item => {
return item.test.test('.svg')
})
if (filesRuleIndex !== -1) {
cfg.module.rules[filesRuleIndex].test = /\.(png|jpe?g|gif|webp)$/
const svgRule = {...cfg.module.rules[filesRuleIndex]}
svgRule.test = /\.svg/
svgRule.exclude = svgRule.exclude || []
svgRule.exclude.push(path.join(__dirname, 'node_modules', '@ckeditor'))
cfg.module.rules.push(svgRule)
}
cfg.module.rules.push({
test: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
use: ["raw-loader"]
})
그런데 내 프로젝트는 craco를 쓰고 있어서 조금 달랐다. 이렇게 수정하라는데 원래 이렇게 되있었다;;
module.exports = {
webpack: {
configure: config => {
config.plugins.push(
new CKEditorWebpackPlugin({
language: 'ko',
addMainLanguageTranslationsToAllAssets: true
})
);
const regExpThemeIconSvg =
/ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/;
const regExpThemeCss = /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css/;
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
config.module.rules.push(
{ test: regExpThemeIconSvg, use: ['raw-loader'] },
{
test: regExpThemeCss,
use: [
{
loader: 'style-loader',
options: {
injectType: 'singletonStyleTag',
attributes: {
'data-cke': true
}
}
},
{
loader: 'postcss-loader',
options: styles.getPostCssConfig({
themeImporter: {
themePath: require.resolve('@ckeditor/ckeditor5-theme-lark')
},
minify: true
})
}
]
}
);
config.module.rules.forEach(rule => {
if (rule.oneOf) {
rule.oneOf.forEach(subRule => {
/* eslint no-param-reassign: "error" */
if (String(subRule.test) === String(cssRegex)) {
subRule.exclude = [cssModuleRegex, regExpThemeCss];
}
if (String(subRule.test) === String(cssModuleRegex)) {
subRule.exclude = [regExpThemeCss];
}
if (
String(subRule.loader).includes('file-loader') &&
Array.isArray(subRule.exclude)
) {
subRule.exclude.push(regExpThemeIconSvg, regExpThemeCss);
}
});
}
});
return config;
}
}
};
craco 와 webpack 과 CKEditor의 환장의 콜라보
맞는데 왜 안되는겨 ?!?!
몇시간 끙끙대다 잠을 청했다...
아 그냥 폴더 밀고 다시 받아서 해봐야겠다...
yarn.lock 을 지우고 다시 해본다
안된다.
node-modules를 몇번 지우고 깔았는지 기억이 안난다. 한 20번정도 한거 같은데...
package.json 에서 시키는 대로 babel-loader를 지우고 다시 해본다
안된다.
In most cases 에 해결된다 했는데.... 거짓말쟁이
아니 어제 cypress로 테스트 코드도 작성하고 통과까지 했는데 merge 하니까 기가막히게 안되네;;
npm ls babel-loader
여기 뭔가 문제가 있는거 같다
[email protected]의 babel-loader가 혼자 @8.1.0 이다
검색해보니까 react-scripts의 최신버전은 5.0.0 이다 package.json을 수정하고 node-modules를 지우고 다시 yarn 해준다.
응 아니야~
진짜 잔다
다음날
오늘은 버그가 해결되길...
암만봐도 babel-loader가 문제라 다시 해봐야겠다
그런데 storybook은 않쓰는거라 지웠다
이제 내 dependencies에 babel-loader는 react-sctips에만 들어간다
된다!!
근데 왜 되는건데;;
react-scripts를 5.0.0으로 최신화 하니 또 안된다
ckeditor도 최신화를 해야겠다
npm-check-updates를 설치하고
ncu -u 를 사용한다
Switch 는 또 왜 안 되 는 건 데 ;;
검색해보니 react-router-dom 부터는 Switch, Hoc 등 바뀐게 좀 있다
후.... 나중에 바꿔야 겠다... eslint나 react-router-dom은 빼고 최신화 해야겠다
응 안돼~
ckeditor는 29에서 31로 최신화 해도 안된다
그 래 서 CKEditor5와 babel-loader 8.2.3는 호환이 되지 않는걸로 결론을 내렸따
정확히 어느버전까지 호환되는지는 스트레스 받아서 안찾았다
편 - 안
요약:
1. storybook이랑 react-scripts랑 babel-loader 버전이 충돌했고
2. CKEditor5 랑 babel-loader최신버전이랑 호환이 안된다
끝
Author And Source
이 문제에 관하여(CKEditor5 와 babel-loader 호환 에러), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@alsanrlf/CKEditor5-플러그인과-react-scripts-충돌-에러저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)