const autoprefixer = require('autoprefixer') const pxtoviewport = require('postcss-px-to-viewport') const { codeInspectorPlugin } = require('code-inspector-plugin') const CompressionPlugin = require('compression-webpack-plugin') const path = require('path') function resolve(dir) { return path.join(__dirname, dir) } module.exports = { publicPath: '.', lintOnSave: false, //是否开启代码检查 outputDir: 'dist', //打包输出目录 productionSourceMap: false, devServer: { https: false, proxy: { '/api': { target: 'https://ecotest.happyinsurance.com.cn:4443/api', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), }, }, }, css: { sourceMap: true, // 查看css属于哪个css文件 loaderOptions: { postcss: { plugins: [ autoprefixer(), pxtoviewport({ viewportWidth: 375, // 该项仅在使用 Circle 组件时需要 // 原因参见 https://github.com/youzan/vant/issues/1948 selectorBlackList: ['van-circle__layer'], }), ], }, }, }, chainWebpack: (config) => { // 移除 prefetch 插件 config.resolve.alias.set('@utils', resolve('./src/assets/js/utils')) // config.plugins.delete('prefetch') /* 配置svg图标自动加载 begin */ config.module.rule('svg').exclude.add(resolve('src/icons')).end() config.module .rule('icons') .test(/\.svg$/) .include.add(resolve('src/icons')) .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]', }) config.plugin('code-inspector-plugin').use( codeInspectorPlugin({ bundler: 'webpack', }) ) }, configureWebpack: (config) => { ;(config.devtool = 'source-map'), // 调试js (config.performance = { hints: 'error', //入口起点的最大体积 700kb maxEntrypointSize: 7168000, //生成文件的最大体积 700kb maxAssetSize: 7168000, }) config.plugins.push( new CompressionPlugin({ filename: '[path][base].gz', algorithm: 'gzip', test: /\.(js|css|html|svg)$/, threshold: 10240, minRatio: 0.8, deleteOriginalAssets: false, }) ) // 添加 hash 到输出文件名 config.output = { ...config.output, filename: 'js/[name].[hash:8].js', chunkFilename: 'js/[name].[hash:8].js', } }, }