const { cdn, getProxyOfDomain, getProxyOfIp } = require('./config') module.exports = { parallel: false, productionSourceMap: false, outputDir: 'page_big_pc', publicPath: process.env.VUE_APP_BASE_PUBLIC, lintOnSave: true, devServer: { disableHostCheck: true, headers: { 'Access-Control-Allow-Origin': '*' }, proxy: getProxyOfDomain('https://web2-jytest.jydev.jianyu360.com') || getProxyOfIp('http://127.0.0.1') }, css: { loaderOptions: { sass: { prependData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";' } } }, chainWebpack: config => { // single-spa if (!process.env.VUE_APP_ALONE) { if (process.env.NODE_ENV === 'production') { // 生产环境配置 config.externals([ 'vue', 'vue-router', 'vuex', 'axios', 'lodash', 'moment' ]) config.plugin('html').tap(args => { // html中添加cdn args[0].cdn = cdn return args }) // config.output.filename('./js/[name].[chunkhash:8].js') config.output.filename = function (pathData) { return pathData.chunk.name === 'app' ? './js/[name].js' : './js/[name].[chunkhash:8].js'; }; config.output.chunkFilename('./js/[name].[chunkhash:8].js'); // config.output.chunkFilename = function (pathData) { // console.log(JSON.stringify(pathData.chunk), '11') // return pathData.chunk.name === 'app' ? './js/[name].js' : './js/[name].[chunkhash:8].js'; // }; config.optimization.minimize(true) .minimizer('terser') .tap(args => { let { terserOptions } = args[0]; terserOptions.compress.drop_console = true; terserOptions.compress.drop_debugger = true; return args }); } else { config.devServer.set('inline', false) config.devServer.set('hot', true) config.output.filename('js/[name].js') } } // 分析静态资源 if (process.env.use_analyzer) { config .plugin('webpack-bundle-analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) } }, filenameHashing: false }