amCharts pdfmake를 webpack externals로 지정
amCharts pdfmake를 webpack externals로 지정
amCharts를 React 프로젝트에 사용하면 GitHub Actions에서 다음과 같은 오류가 발생합니다.
{file path} is {file size} MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
구성은 다음과 같습니다.
package.json{
"dependencies": {
"@amcharts/amcharts4": "^4.9.35",
"webpack": "4.43.0"
},
}
amCharts 부하의 pdfmake 때문입니까?
{file path} is {file size} MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
{
"dependencies": {
"@amcharts/amcharts4": "^4.9.35",
"webpack": "4.43.0"
},
}
maximumFileSizeToCacheInBytes
에서 문제가 발생한다는 issueDependency sizes #569 - amCharts/amCharts4
위의 내용에 따르면 amCharts에서 사용 된
pdfmake
등이 maximumFileSizeToCacheInBytes
를 초과했습니다.빌드 파일 크기 확인
source-map-explorer에서 확인
npm run build -- --stats
에서 파일 크기를 얻으려고했지만폐지되었기 때문에
source-map-explorer
를 사용으로 전환How to build bundle-stats.json in create react app? - stackoverflow
확실히 pdfmake (그 외 xlsx)의 크기가 큰 것을 확인
webpack의 externals를 지정에 의해 빌드에 포함하지 않게 ...
위의 Dependency sizes #569 - amCharts/amCharts4에서,
webpack
externals
을 지정하여 빌드에서 제외 할 수 있었기 때문에 다시 빌드webpack.exterals
externals: {
pdfmake: 'pdfmake',
xlsx: 'xlsx',
canvg: 'canvg',
},
재확인했는데 이하에서,
감소하지 않음 ...
externals를 함수로 지정
위의 issue를 살펴보면
externals
함수 형식으로 지정하면 좋을 것입니다.webpack.externals.function
externals: [
/(xlsx|canvg)/,
function (context, request, callback) {
if (/(pdfmake)/.test(request)) {
return callback(null, 'commonjs ' + request);
}
callback();
},
],
여기의 설명은 공식 문서에도있었습니다.
Large file sizes - Using Webpack - amCharts 4 Documentation
webpack.externals.function.official
externals: function (context, request, callback) {
if (/xlsx|canvg|pdfmake/.test(request)) {
return callback(null, "commonjs " + request);
}
callback();
}
이를 적용하고 재시도
compile-error
chunk runtime-main [entry]
Cannot convert undefined or null to object
뭔가 오류가 ...
pdfmake 의 설명을 상세하게 할 필요가 있는가?
externals
의 지정을 괴롭혀 보았는데, pdfmake
이외의 xlsx
등은 기술대로 제외되는 것을 확인그래서
source-map-explorer
의 출력을 검토해 보았는데, pdfmake
의 표시는 xlsx
와 차이가 있음을 알 수 있습니다.이것
externals
의 정규 표현에 변경을 가야 하는지 생각해, 다음과 같이webpack.externals.function.pdfmake-detailed
externals: function (context, request, callback) {
if (/xlsx|canvg|pdfmake[/]build|[.]internal[/]pdfmake/.test(request)) {
return callback(null, 'commonjs ' + request);
}
callback();
},
pdfmake
의 2 종류인 이하에 합치하도록 변경pdfmake/build/pdfmake.js
src/.internal/pdfmake/vfs_fonts.ts
다시 실행 ... 정상적으로 종료
source-map-explorer
에서 확인한 결과,했어.
pdfmake
이 사라졌는지 확인그러나 어쨌든 설정했던 Jest가 GitHub Actions를 깨고 갔다.
・・・라고 생각하면
vfs_fonts
쪽은 확실히 잔류해 버리고 있었다・・・우선 유효하게 된 기술에 대해서
webpack.externals.function.pdfmake-detailed-valid
externals: function (context, request, callback) {
if (/xlsx|canvg|pdfmake[/]build/.test(request)) {
return callback(null, 'commonjs ' + request);
}
callback();
},
Jest 오류 정보
Angular에서도 발생한 사례
SyntaxError: Unexpected token 'export' with jest in Angular 9 project #2471 - amCharts/amCharts4
jest-error
Details:
~\node_modules\@amcharts\amcharts4\charts.js:7
export { GaugeChartDataItem, GaugeChart } from "./.internal/charts/types/GaugeChart";
^^^^^^
SyntaxError: Unexpected token 'export'
Using amCharts with Jest - amCharts 4 Documentation
Reference
이 문제에 관하여(amCharts pdfmake를 webpack externals로 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ysKuga/items/15a2dbe61831002533b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)