// vue.config.js const path = require('path'); const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV); const resolve = (dir) => path.join(__dirname, dir); const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); // 去掉 console.log module.exports = { publicPath: IS_PROD ? process.env.VUE_APP_PUBLIC_PATH : "./", // 默认'/',部署应用包时的基本 URL indexPath: 'index.html', // 相对于打包路径index.html的路径 outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录 assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录 lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码 runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本 productionSourceMap: !IS_PROD, // 生产环境的 source map parallel: require("os").cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。 pwa: {}, // 向 PWA 插件传递选项。 chainWebpack: config => { config.resolve.symlinks(true); // 修复热更新失效 // 添加别名 config.resolve.alias .set('@', resolve('src')) .set('@api', resolve('src/api')) .set('@tools', resolve('src/tools')) .set('@assets', resolve('src/assets')) .set('@components', resolve('src/components')) .set('@views', resolve('src/views')) .set('@router', resolve('src/router')) .set('@store', resolve('src/store')) .set('@jsonData', resolve('src/jsonData')); // 压缩图片 // if (IS_PROD) { // config.module // .rule("images") // .use("image-webpack-loader") // .loader("image-webpack-loader") // .options({ // mozjpeg: { progressive: true, quality: 65 }, // optipng: { enabled: false }, // pngquant: { quality: [0.65, 0.9], speed: 4 }, // gifsicle: { interlaced: false } // // webp: { quality: 75 } // }); // } }, // 去掉console.log configureWebpack: config => { if (IS_PROD) { const plugins = []; plugins.push( new UglifyJsPlugin({ uglifyOptions: { compress: { drop_console: true, drop_debugger: false, pure_funcs: ["console.log"] //移除console } }, sourceMap: false, parallel: true }) ); config.plugins = [...config.plugins, ...plugins]; } }, pages: { index: { // page 的入口 entry: 'src/main.js', // 模板来源 template: 'public/index.html', // 在 dist/index.html 的输出 filename: 'index.html', // 当使用 title 选项时, // template 中的 title 标签需要是 <%= htmlWebpackPlugin.options.title %> title: '国电电力宁夏新能源集中监控系统', // 在这个页面中包含的块,默认情况下会包含 // 提取出来的通用 chunk 和 vendor chunk。 chunks: ['chunk-vendors', 'chunk-common', 'index'] }, }, devServer: { open: true, // 是否打开浏览器 } }