| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Change theme plugin
- import MergeLessPlugin from 'antd-pro-merge-less';
- // import AntDesignThemePlugin from 'antd-theme-webpack-plugin';
- const ThemeColorReplacer = require('webpack-theme-color-replacer');
- import path from 'path';
- function getModulePackageName(module) {
- if (!module.context) return null;
- const nodeModulesPath = path.join(__dirname, '../node_modules/');
- if (module.context.substring(0, nodeModulesPath.length) !== nodeModulesPath) {
- return null;
- }
- const moduleRelativePath = module.context.substring(nodeModulesPath.length);
- const [moduleDirName] = moduleRelativePath.split(path.sep);
- let packageName = moduleDirName;
- // handle tree shaking
- if (packageName.match('^_')) {
- // eslint-disable-next-line prefer-destructuring
- packageName = packageName.match(/^_(@?[^@]+)/)[1];
- }
- return packageName;
- }
- export default config => {
- // preview.pro.ant.design only do not use in your production ; preview.pro.ant.design 专用环境变量,请不要在你的项目中使用它。
- if (
- process.env.ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ||
- process.env.NODE_ENV !== 'production'
- ) {
- // 将所有 less 合并为一个供 themePlugin使用
- const outFile = path.join(__dirname, '../.temp/ant-design-pro.less');
- const stylesDir = path.join(__dirname, '../src/');
- config.plugin('merge-less').use(MergeLessPlugin, [
- {
- stylesDir,
- outFile,
- },
- ]);
- config.plugin('webpack-theme-color-replacer').use(ThemeColorReplacer, [{
- fileName: 'css/theme-colors.css',
- matchColors: getAntdSerials('#1890ff'), // 主色系列
- }]);
- // config.plugin('ant-design-theme').use(AntDesignThemePlugin, [
- // {
- // antDir: path.join(__dirname, '../node_modules/antd'),
- // stylesDir,
- // varFile: path.join(__dirname, '../node_modules/antd/lib/style/themes/default.less'),
- // mainLessFile: outFile, // themeVariables: ['@primary-color'],
- // indexFileName: 'index.html',
- // generateOne: true,
- // lessUrl: 'https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js',
- // },
- // ]);
- }
- // optimize chunks
- config.optimization
- .runtimeChunk(false) // share the same chunks across different modules
- .splitChunks({
- chunks: 'async',
- name: 'vendors',
- maxInitialRequests: Infinity,
- minSize: 0,
- cacheGroups: {
- vendors: {
- test: module => {
- const packageName = getModulePackageName(module);
- if (packageName) {
- return ['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0;
- }
- return false;
- },
- name(module) {
- const packageName = getModulePackageName(module);
- if (['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0) {
- return 'viz'; // visualization package
- }
- return 'misc';
- },
- },
- },
- });
- };
- function getAntdSerials(color) {
- const lightens = new Array(9).fill().map((t, i) => {
- return ThemeColorReplacer.varyColor.lighten(color, i / 10);
- });
- // 此处为了简化,采用了darken。实际按color.less需求可以引入tinycolor, colorPalette变换得到颜色值
- const darkens = new Array(6).fill().map((t, i) => {
- return ThemeColorReplacer.varyColor.darken(color, i / 10);
- });
- return lightens.concat(darkens);
- }
|