mirror of
https://github.com/ant-design/ant-design.git
synced 2024-11-23 18:50:06 +08:00
chore: Update webpack.config.js (#51098)
This commit is contained in:
parent
e8b0fc4925
commit
34cf399e10
@ -7,86 +7,85 @@ const CircularDependencyPlugin = require('circular-dependency-plugin');
|
||||
const DuplicatePackageCheckerPlugin = require('@madccc/duplicate-package-checker-webpack-plugin');
|
||||
const path = require('path');
|
||||
|
||||
function addLocales(webpackConfig) {
|
||||
function addLocales(config) {
|
||||
const newConfig = { ...config }; // Avoid mutating the original config
|
||||
let packageName = 'antd-with-locales';
|
||||
if (webpackConfig.entry['antd.min']) {
|
||||
if (newConfig.entry['antd.min']) {
|
||||
packageName += '.min';
|
||||
}
|
||||
webpackConfig.entry[packageName] = './index-with-locales.js';
|
||||
webpackConfig.output.filename = '[name].js';
|
||||
newConfig.entry[packageName] = './index-with-locales.js';
|
||||
newConfig.output.filename = '[name].js';
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
function externalDayjs(config) {
|
||||
config.externals.dayjs = {
|
||||
const newConfig = { ...config }; // Shallow copy for safety
|
||||
newConfig.externals.dayjs = {
|
||||
root: 'dayjs',
|
||||
commonjs2: 'dayjs',
|
||||
commonjs: 'dayjs',
|
||||
amd: 'dayjs',
|
||||
};
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
function externalCssinjs(config) {
|
||||
config.resolve = config.resolve || {};
|
||||
config.resolve.alias = config.resolve.alias || {};
|
||||
|
||||
config.resolve.alias['@ant-design/cssinjs'] = path.resolve(__dirname, 'alias/cssinjs');
|
||||
const newConfig = { ...config }; // Shallow copy for safety
|
||||
newConfig.resolve = newConfig.resolve || {};
|
||||
newConfig.resolve.alias = newConfig.resolve.alias || {};
|
||||
newConfig.resolve.alias['@ant-design/cssinjs'] = path.resolve(__dirname, 'alias/cssinjs');
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
let webpackConfig = getWebpackConfig(false);
|
||||
|
||||
// Used for `size-limit` ci which only need to check min files
|
||||
if (process.env.PRODUCTION_ONLY) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log('🍐 Build production only');
|
||||
webpackConfig = webpackConfig.filter((config) => config.mode === 'production');
|
||||
}
|
||||
|
||||
// RUN_ENV: https://github.com/ant-design/antd-tools/blob/14ee166fc1f4ab5e87da45ee3b0643a8325f1bc3/lib/gulpfile.js#L48
|
||||
if (process.env.RUN_ENV === 'PRODUCTION') {
|
||||
webpackConfig.forEach((config) => {
|
||||
addLocales(config);
|
||||
externalDayjs(config);
|
||||
externalCssinjs(config);
|
||||
// Reduce non-minified dist files size
|
||||
config.optimization.usedExports = true;
|
||||
|
||||
function addPluginsForProduction(config) {
|
||||
const newConfig = { ...config }; // Shallow copy for safety
|
||||
if (!process.env.CI || process.env.ANALYZER) {
|
||||
config.plugins.push(
|
||||
newConfig.plugins.push(
|
||||
new BundleAnalyzerPlugin({
|
||||
analyzerMode: 'static',
|
||||
openAnalyzer: false,
|
||||
reportFilename: '../report.html',
|
||||
}),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
if (config.mode !== 'production') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!process.env.PRODUCTION_ONLY) {
|
||||
config.plugins.push(
|
||||
if (newConfig.mode === 'production' && !process.env.PRODUCTION_ONLY) {
|
||||
newConfig.plugins.push(
|
||||
new DuplicatePackageCheckerPlugin({
|
||||
verbose: true,
|
||||
emitError: true,
|
||||
}),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
config.plugins.push(
|
||||
newConfig.plugins.push(
|
||||
codecovWebpackPlugin({
|
||||
enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined,
|
||||
bundleName: 'antd.min',
|
||||
uploadToken: process.env.CODECOV_TOKEN,
|
||||
}),
|
||||
new CircularDependencyPlugin({
|
||||
failOnError: true,
|
||||
})
|
||||
);
|
||||
|
||||
config.plugins.push(
|
||||
new CircularDependencyPlugin({
|
||||
// add errors to webpack instead of warnings
|
||||
failOnError: true,
|
||||
}),
|
||||
);
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
let webpackConfig = getWebpackConfig(false);
|
||||
|
||||
if (process.env.PRODUCTION_ONLY) {
|
||||
console.log('🍐 Build production only');
|
||||
webpackConfig = webpackConfig.filter((config) => config.mode === 'production');
|
||||
}
|
||||
|
||||
if (process.env.RUN_ENV === 'PRODUCTION') {
|
||||
webpackConfig = webpackConfig.map((config) => {
|
||||
let newConfig = addLocales(config);
|
||||
newConfig = externalDayjs(newConfig);
|
||||
newConfig = externalCssinjs(newConfig);
|
||||
newConfig.optimization.usedExports = true;
|
||||
newConfig = addPluginsForProduction(newConfig);
|
||||
return newConfig;
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user