| New file |
| | |
| | | 'use strict' |
| | | const path = require('path') |
| | | |
| | | function resolve(dir) { |
| | | return path.join(__dirname, dir) |
| | | } |
| | | const port = process.env.port || process.env.npm_config_port || 9528 |
| | | |
| | | module.exports = { |
| | | publicPath: './', |
| | | outputDir: 'dist', |
| | | assetsDir: 'static', |
| | | lintOnSave: process.env.NODE_ENV === 'development', |
| | | productionSourceMap: false, |
| | | devServer: { |
| | | port: port, |
| | | open: true, |
| | | overlay: { |
| | | warnings: false, |
| | | errors: true |
| | | }, |
| | | watchOptions: { |
| | | // 只监听项目根目录下的文件(替换为你的项目实际路径) |
| | | // 例如:项目在 D:\data_vue\0708-1\manage-vue-manage_Andy |
| | | cwd: path.resolve(__dirname), // 限制监听范围为当前项目目录 |
| | | ignored: [ |
| | | 'D:/DumpStack.log.tmp', |
| | | 'D:/*', |
| | | '**/node_modules', |
| | | '**/.git' |
| | | ] |
| | | } |
| | | }, |
| | | configureWebpack: { |
| | | resolve: { |
| | | alias: { |
| | | '@': resolve('src') |
| | | } |
| | | } |
| | | }, |
| | | chainWebpack(config) { |
| | | config.plugin('preload').tap(() => [{ |
| | | rel: 'preload', |
| | | fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/], |
| | | include: 'initial' |
| | | }]) |
| | | |
| | | config.plugins.delete('prefetch') |
| | | |
| | | 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') |
| | | .end() |
| | | |
| | | config |
| | | .when(process.env.NODE_ENV !== 'development', |
| | | config => { |
| | | config |
| | | .plugin('ScriptExtHtmlWebpackPlugin') |
| | | .after('html') |
| | | .use('script-ext-html-webpack-plugin', [{ |
| | | // `runtime` must same as runtimeChunk name. default is `runtime` |
| | | inline: /runtime\..*\.js$/ |
| | | }]) |
| | | .end() |
| | | config |
| | | .optimization.splitChunks({ |
| | | chunks: 'all', |
| | | cacheGroups: { |
| | | libs: { |
| | | name: 'chunk-libs', |
| | | test: /[\\/]node_modules[\\/]/, |
| | | priority: 10, |
| | | chunks: 'initial' // only package third parties that are initially dependent |
| | | }, |
| | | elementUI: { |
| | | name: 'chunk-elementUI', // split elementUI into a single package |
| | | priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app |
| | | test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm |
| | | }, |
| | | commons: { |
| | | name: 'chunk-commons', |
| | | test: resolve('src/components'), // can customize your rules |
| | | minChunks: 3, // minimum common number |
| | | priority: 5, |
| | | reuseExistingChunk: true |
| | | } |
| | | } |
| | | }) |
| | | // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk |
| | | config.optimization.runtimeChunk('single') |
| | | } |
| | | ) |
| | | } |
| | | } |