const path = require('path'); const resolve = dir => { return path.join(__dirname, dir); }; const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const CompressionWebpackPlugin = require('compression-webpack-plugin'); const productionGzipExtensions = ['js', 'css']; // 项目部署基础 // 默认情况下,我们假设你的应用将被部署在域的根目录下, // 例如:https://www.my-app.com/ // 默认:'/' // 如果您的应用程序部署在子路径中,则需要在这指定子路径 // 例如:https://www.foobar.com/my-app/ // 需要将它改为'/my-app/' const publicPath = process.env.NODE_ENV === 'production' ? '/' : '/'; const lintOnSave = process.env.NODE_ENV === 'production'; module.exports = { devServer: { disableHostCheck: true }, // Project deployment base // By default we assume your app will be deployed at the root of a domain, // e.g. https://www.my-app.com/ // If your app is deployed at a sub-path, you will need to specify that // sub-path here. For example, if your app is deployed at // https://www.foobar.com/my-app/ // then change this to '/my-app/' publicPath, // tweak internal webpack configuration. // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md // 如果你不需要使用eslint,把lintOnSave设为false即可 lintOnSave:false, chainWebpack: config => { config.entry = { main: ['babel-polyfill', './src/main'], vendors: './src/vendors' }; // config.entry('polyfill').add('@babel/polyfill') // config.module // .rule('view-design') // .test(/view-design.src.*?js$/) // .use('babel') // .loader('babel-loader') // .end(); config.resolve.alias .set('@', resolve('src')) // key,value自行定义,比如.set('@@', resolve('src/components')) .set('_c', resolve('src/components')); if (process.env.use_analyzer) { // 分析 config .plugin('webpack-bundle-analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) } }, transpileDependencies:['flyio'], // 设为false打包时不生成.map文件 productionSourceMap: false, // 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串 // devServer: { // proxy: 'localhost:3000' // } configureWebpack: { plugins: [ // 开启gzip压缩 new CompressionWebpackPlugin({ algorithm: 'gzip', test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), threshold: 10240, minRatio: 0.8 }) ], optimization: { minimizer: [ new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: true, drop_console: true, // console drop_debugger: true, pure_funcs: ['console.log'] // 移除console } } }) ] } } };