| | |
| | | let path = require('path') |
| | | const webpack = require('webpack') |
| | | const ThemeColorReplacer = require('webpack-theme-color-replacer') |
| | | const {getThemeColors, modifyVars} = require('./src/utils/themeUtil') |
| | | const {resolveCss} = require('./src/utils/theme-color-replacer-extend') |
| | | const CompressionWebpackPlugin = require('compression-webpack-plugin') |
| | | |
| | | const productionGzipExtensions = ['js', 'css'] |
| | | const isProd = process.env.NODE_ENV === 'production' |
| | | |
| | | const assetsCDN = { |
| | |
| | | axios: 'axios', |
| | | nprogress: 'NProgress', |
| | | clipboard: 'ClipboardJS', |
| | | '@antv/data-set': 'DataSet' |
| | | '@antv/data-set': 'DataSet', |
| | | 'js-cookie': 'Cookies' |
| | | }, |
| | | css: [ |
| | | ], |
| | |
| | | '//cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js', |
| | | '//cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.js', |
| | | '//cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js', |
| | | '//cdn.jsdelivr.net/npm/@antv/data-set@0.11.4/build/data-set.min.js' |
| | | '//cdn.jsdelivr.net/npm/@antv/data-set@0.11.4/build/data-set.min.js', |
| | | '//cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js' |
| | | ] |
| | | } |
| | | |
| | |
| | | }, |
| | | configureWebpack: config => { |
| | | config.entry.app = ["babel-polyfill", "whatwg-fetch", "./src/main.js"]; |
| | | config.performance = { |
| | | hints: false |
| | | } |
| | | config.plugins.push( |
| | | new ThemeColorReplacer({ |
| | | fileName: 'css/theme-colors-[contenthash:8].css', |
| | |
| | | resolveCss |
| | | }) |
| | | ) |
| | | config.externals = isProd ? assetsCDN.externals : {} |
| | | // Ignore all locale files of moment.js |
| | | config.plugins.push(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)) |
| | | // 生产环境下将资源压缩成gzip格式 |
| | | if (isProd) { |
| | | // add `CompressionWebpack` plugin to webpack plugins |
| | | config.plugins.push(new CompressionWebpackPlugin({ |
| | | algorithm: 'gzip', |
| | | test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), |
| | | threshold: 10240, |
| | | minRatio: 0.8 |
| | | })) |
| | | } |
| | | // if prod, add externals |
| | | if (isProd) { |
| | | config.externals = assetsCDN.externals |
| | | } |
| | | }, |
| | | chainWebpack: config => { |
| | | // 生产环境下关闭css压缩的 colormin 项,因为此项优化与主题色替换功能冲突 |
| | |
| | | return args |
| | | }) |
| | | } |
| | | config.plugin('html') |
| | | .tap(args => { |
| | | args[0].title = 'Vue Antd Admin' |
| | | return args |
| | | }) |
| | | // 生产环境下使用CDN |
| | | if (isProd) { |
| | | config.plugin('html') |
| | | .tap(args => { |