| | |
| | | // const webpack = require("webpack"); |
| | | // vue.config.js - éé
Webpack 4 ççæ¬ |
| | | const path = require('path'); |
| | | |
| | | module.exports = { |
| | | productionSourceMap: false, |
| | | lintOnSave: false, |
| | | |
| | | // 转è¯è¿äºå
|
| | | transpileDependencies: [ |
| | | 'vue-router', |
| | | 'vue-draggable-next', |
| | | 'vuex', |
| | | 'element-plus' |
| | | ], |
| | | |
| | | devServer: { |
| | | port: 8080, |
| | | overlay: { |
| | | warning: false, |
| | | errors: false |
| | | } |
| | | overlay: false, |
| | | hot: true |
| | | }, |
| | | |
| | | css: { |
| | | //æ¥çCSSå±äºåªä¸ªcssæä»¶ |
| | | sourceMap: true |
| | | }, |
| | | |
| | | configureWebpack: { |
| | | module: { |
| | | rules: [ |
| | | // å¤ç .mjs æä»¶ - ç®åçæ¬ï¼ç§»é¤ fullySpecified |
| | | { |
| | | test: /\.mjs$/, |
| | | include: /node_modules/, |
| | | type: "javascript/auto" |
| | | type: 'javascript/auto' |
| | | }, |
| | | { |
| | | test: /\.s[ac]ss$/, |
| | | use: [ |
| | | 'sass-loader' |
| | | ] |
| | | use: ['sass-loader'] |
| | | } |
| | | ] |
| | | }, |
| | | resolve: { |
| | | extensions: ['.js', '.vue', '.json', '.mjs'], |
| | | // Webpack 4 䏿¯æ fullySpecifiedï¼ç§»é¤ææ¹ä¸ºå
¶ä»æ¹å¼ |
| | | mainFields: ['module', 'main'] // ä¼å
ä½¿ç¨ ES 模å |
| | | } |
| | | }, |
| | | //https://cli.vuejs.org/zh/guide/html-and-static-assets.html#html |
| | | |
| | | chainWebpack: (config) => { |
| | | // ç§»é¤ prefetch æä»¶ |
| | | config.plugins.delete('prefetch'); |
| | | //èªä¸å®ä¹title |
| | | config.plugin('html').tap((args) => { |
| | | args[0].title = 'WMS'; |
| | | return args; |
| | | }); |
| | | |
| | | // æè
|
| | | // ä¿®æ¹å®çéé¡¹ï¼ |
| | | // config.plugin('prefetch').tap(options => { |
| | | // options[0].fileBlacklist = options[0].fileBlacklist || [] |
| | | // options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/) |
| | | // return options |
| | | // }) |
| | | |
| | | // ========== ä¿®å¤ Webpack 4 å
¼å®¹æ§ ========== |
| | | |
| | | // 1. å 餿é®é¢çè§åï¼å¦æåå¨ï¼ |
| | | config.module.rules.delete('mjs'); |
| | | |
| | | // 2. å建ç®åç .mjs å¤çè§å |
| | | config.module |
| | | .rule('mjs') |
| | | .test(/\.mjs$/) |
| | | .include |
| | | .add(/node_modules\/vue-router/) |
| | | .add(/node_modules\/vue-draggable-next/) |
| | | .add(/node_modules\/element-plus/) |
| | | .end() |
| | | .type('javascript/auto'); |
| | | |
| | | // 3. é
ç½® JS æä»¶å¤ç |
| | | config.module |
| | | .rule('js') |
| | | .test(/\.js$/) |
| | | .include |
| | | .add(path.resolve(__dirname, 'src')) |
| | | .add(/node_modules\/vue-router/) |
| | | .add(/node_modules\/vue-draggable-next/) |
| | | .add(/node_modules\/element-plus/) |
| | | .add(/node_modules\/vuex/) |
| | | .end() |
| | | .use('babel-loader') |
| | | .loader('babel-loader') |
| | | .options({ |
| | | cacheDirectory: true, |
| | | presets: [ |
| | | ['@babel/preset-env', { |
| | | targets: { |
| | | browsers: ['> 1%', 'last 2 versions', 'not dead'], |
| | | node: '16.0.0' |
| | | }, |
| | | modules: 'commonjs' // Webpack 4 éè¦ commonjs |
| | | }] |
| | | ], |
| | | plugins: [ |
| | | // å¤çå¯é龿ä½ç¬¦ |
| | | '@babel/plugin-proposal-optional-chaining', |
| | | // å¤ç空å¼åå¹¶æä½ç¬¦ |
| | | '@babel/plugin-proposal-nullish-coalescing-operator' |
| | | ] |
| | | }); |
| | | } |
| | | // configureWebpack: { |
| | | // plugins: [ |
| | | // new webpack.optimize.MinChunkSizePlugin({ |
| | | // minChunkSize: 100000 // éè¿åå¹¶å°äº minChunkSize 大å°ç chunkï¼å° chunk ä½ç§¯ä¿æå¨æå®å¤§å°éå¶ä»¥ä¸ |
| | | // }) |
| | | // ] |
| | | // } |
| | | }; |
| | | }; |