12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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'
- }
- }
- }
|