[Dev] Add Statoscope: Better bundle analyzer (#1800)
This commit is contained in:
parent
5e676b9dec
commit
71fed7567f
@ -9,7 +9,7 @@
|
|||||||
"stylelint-declaration-block-no-ignored-properties",
|
"stylelint-declaration-block-no-ignored-properties",
|
||||||
"stylelint-high-performance-animation",
|
"stylelint-high-performance-animation",
|
||||||
"stylelint-group-selectors",
|
"stylelint-group-selectors",
|
||||||
"./plugins/wholePixel.js"
|
"./dev/wholePixel.js"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"number-leading-zero": "always",
|
"number-leading-zero": "always",
|
||||||
|
|||||||
10
dev/createPRComment.js
Normal file
10
dev/createPRComment.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
module.exports = async ({ github, context, core, body }) => {
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
};
|
||||||
13
dev/createStatoscopeComment.js
Normal file
13
dev/createStatoscopeComment.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const createPRComment = require('./createPRComment');
|
||||||
|
const template = require('../.github/workflows/statoscope-comment.js');
|
||||||
|
|
||||||
|
module.exports = async ({ github, context, core }) => {
|
||||||
|
const data = JSON.parse(fs.readFileSync('result.json', 'utf8'));
|
||||||
|
data.prNumber = context.issue.number;
|
||||||
|
const body = template(data);
|
||||||
|
|
||||||
|
await createPRComment({ github, context, core, body });
|
||||||
|
};
|
||||||
19
dev/webpackContextExtension.js
Normal file
19
dev/webpackContextExtension.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
// Comes from: https://raw.githubusercontent.com/statoscope/statoscope.tech/main/custom-ext.js
|
||||||
|
|
||||||
|
module.exports = class WebpackContextExtension {
|
||||||
|
constructor() {
|
||||||
|
this.context = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
handleCompiler(compiler) {
|
||||||
|
this.context = compiler.context;
|
||||||
|
}
|
||||||
|
|
||||||
|
getExtension() {
|
||||||
|
return {
|
||||||
|
descriptor: { name: 'custom-webpack-extension-context', version: '1.0.0' },
|
||||||
|
payload: { context: this.context },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
1231
package-lock.json
generated
1231
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -16,7 +16,9 @@
|
|||||||
"gramjs:tl": "node ./src/lib/gramjs/tl/generateModules.js",
|
"gramjs:tl": "node ./src/lib/gramjs/tl/generateModules.js",
|
||||||
"gramjs:lint:fix": "eslint ./src/lib/gramjs --fix",
|
"gramjs:lint:fix": "eslint ./src/lib/gramjs --fix",
|
||||||
"test": "cross-env APP_ENV=test jest --verbose --forceExit",
|
"test": "cross-env APP_ENV=test jest --verbose --forceExit",
|
||||||
"prepare": "husky install"
|
"prepare": "husky install",
|
||||||
|
"statoscope:validate": "statoscope validate --input public/build-stats.json",
|
||||||
|
"statoscope:validate-diff": "statoscope validate --input input.json --reference reference.json"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.13",
|
"node": "^16.13",
|
||||||
@ -42,6 +44,8 @@
|
|||||||
"@babel/preset-react": "^7.16.7",
|
"@babel/preset-react": "^7.16.7",
|
||||||
"@babel/preset-typescript": "^7.16.7",
|
"@babel/preset-typescript": "^7.16.7",
|
||||||
"@peculiar/webcrypto": "^1.3.2",
|
"@peculiar/webcrypto": "^1.3.2",
|
||||||
|
"@statoscope/cli": "^5.20.1",
|
||||||
|
"@statoscope/webpack-plugin": "^5.20.1",
|
||||||
"@testing-library/jest-dom": "^5.16.2",
|
"@testing-library/jest-dom": "^5.16.2",
|
||||||
"@types/croppie": "^2.6.1",
|
"@types/croppie": "^2.6.1",
|
||||||
"@types/jest": "^27.4.1",
|
"@types/jest": "^27.4.1",
|
||||||
@ -93,7 +97,6 @@
|
|||||||
"stylelint-high-performance-animation": "^1.6.0",
|
"stylelint-high-performance-animation": "^1.6.0",
|
||||||
"typescript": "^4.6.2",
|
"typescript": "^4.6.2",
|
||||||
"webpack": "^5.70.0",
|
"webpack": "^5.70.0",
|
||||||
"webpack-bundle-analyzer": "^4.5.0",
|
|
||||||
"webpack-cli": "^4.9.2",
|
"webpack-cli": "^4.9.2",
|
||||||
"webpack-dev-server": "^4.7.4",
|
"webpack-dev-server": "^4.7.4",
|
||||||
"webpack-merge": "^5.8.0"
|
"webpack-merge": "^5.8.0"
|
||||||
|
|||||||
@ -8,10 +8,10 @@ const {
|
|||||||
} = require('webpack');
|
} = require('webpack');
|
||||||
const HtmlPlugin = require('html-webpack-plugin');
|
const HtmlPlugin = require('html-webpack-plugin');
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||||
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
||||||
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
||||||
const { GitRevisionPlugin } = require('git-revision-webpack-plugin');
|
const { GitRevisionPlugin } = require('git-revision-webpack-plugin');
|
||||||
|
const StatoscopeWebpackPlugin = require('@statoscope/webpack-plugin').default;
|
||||||
|
const WebpackContextExtension = require('./dev/webpackContextExtension');
|
||||||
const appVersion = require('./package.json').version;
|
const appVersion = require('./package.json').version;
|
||||||
|
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
@ -135,12 +135,16 @@ module.exports = (env = {}, argv = {}) => {
|
|||||||
Buffer: ['buffer', 'Buffer'],
|
Buffer: ['buffer', 'Buffer'],
|
||||||
process: 'process/browser',
|
process: 'process/browser',
|
||||||
}),
|
}),
|
||||||
...(argv.mode === 'production' ? [
|
new StatoscopeWebpackPlugin({
|
||||||
new BundleAnalyzerPlugin({
|
statsOptions: {
|
||||||
analyzerMode: 'static',
|
context: __dirname,
|
||||||
openAnalyzer: false,
|
},
|
||||||
}),
|
saveReportTo: path.resolve('./public/statoscope-report.html'),
|
||||||
] : []),
|
saveStatsTo: path.resolve('./public/build-stats.json'),
|
||||||
|
normalizeStats: true,
|
||||||
|
open: 'file',
|
||||||
|
extensions: [new WebpackContextExtension()],
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
|
|
||||||
...(!env.noSourceMap && {
|
...(!env.noSourceMap && {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user