const webpack = require('webpack') const path = require('path'); const CompressionWebpackPlugin = require('compression-webpack-plugin') const GenerateAssetPlugin = require('generate-asset-webpack-plugin') const Timestamp = new Date().getTime() const createServerConfig = function (compilation) { let config = { version: new Date().getTime() } return JSON.stringify(config) } function resolve(dir) { return path.join(__dirname, dir)//设置绝对路径 } module.exports = { devServer: { port: "8080", //代理端口 open: false, //项目启动时是否自动打开浏览器,我这里设置为false,不打开,true表示打开 headers: { 'Access-Control-Allow-Origin': '*', }, proxy: { '/cloudApi': { target: 'http://120.79.80.64:8050', ws: true, pathRewrite: { '^/api': '/' } }, } }, chainWebpack: (config) => { config.resolve.alias .set('_static', resolve('src/assets'))//参数1,设置的别名,参数2:设置的路径 config .plugin('html') .tap(args => { args[0].title = '智能仓储一体机' return args }) }, // 设为false打包时不生成.map文件 productionSourceMap: false, configureWebpack: config => { // 开发环境不需要gzip 生产环境时清空所有console if (process.env.NODE_ENV !== 'production') return else config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true config.plugins.push( new CompressionWebpackPlugin({ // 正在匹配需要压缩的文件后缀 test: /\.(js|css|svg|woff|ttf|json|html)$/, // 大于10kb的会压缩 threshold: 10240 // 其余配置查看compression-webpack-plugin }) ) config.plugins.push( new GenerateAssetPlugin({ filename: 'version.json', fn: (compilation, cb) => { cb(null, createServerConfig(compilation)) }, extraFiles: [] }) ) config.plugins.push( new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery' }) ) config.output.filename = `js/[name].${Timestamp}.js` config.output.chunkFilename = `js/[name].${Timestamp}.js` } }