const path = require('path'); const UglifyPlugin = require('uglifyjs-webpack-plugin') function resolve(dir) { // __dirname项目根目录的绝对路径 return path.join(__dirname, dir); } module.exports = { lintOnSave: false, publicPath: './', chainWebpack: config => { config.resolve.alias .set('@', resolve('src')) const svgRule = config.module.rule('svg'); // 清除已有的所有loader // 如果你不这样做,接下来的loader会附加在该规则现有的loader之后 svgRule.uses.clear(); svgRule .test(/\.svg$/) .include.add(path.resolve(__dirname, './src/svgicons/svg')) .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }); const fileRule = config.module.rule('file'); fileRule.uses.clear(); fileRule .test(/\.svg$/) .exclude.add(path.resolve(__dirname, './src/svgicons/svg')) .end() .use('file-loader') .loader('file-loader'); config.module .rule("fonts") .test(/.(ttf|otf|eot|woff|woff2)$/) .use("url-loader") .loader("url-loader") .tap(options => { options = { limit: 10000, } return options }) .end() }, configureWebpack: (config) => { // 引入uglifyjs-webpack-plugin let UglifyPlugin = require('uglifyjs-webpack-plugin'); if (process.env.NODE_ENV == 'production') { // 为生产环境修改配置 config.mode = 'production' // 将每个依赖包打包成单独的js文件 let optimization = { minimizer: [new UglifyPlugin({ uglifyOptions: { warnings: false, compress: { drop_console: true, drop_debugger: false, pure_funcs: ['console.log'] } } })] } Object.assign(config, { optimization }) } else { // 为开发环境修改配置 config.mode = 'development' } } }