const path = require("path"); // npm install --save-dev hard-source-webpack-plugin const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); // function resolve(dir) { // return path.join(__dirname, dir) // } const CompressionPlugin = require("compression-webpack-plugin"); const isProd = process.env.NODE_ENV === "production"; const Timestamp = new Date().getTime(); const webpack = require("webpack"); module.exports = { configureWebpack: { // 支持全局jquery plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "windows.jQuery": "jquery" }) ] }, assetsDir: "assets", publicPath: process.env.VUE_APP_MERGE == 1 ? process.env.VUE_APP_BASE_URL_DVP + "/" : "", //合并三个应用 lintOnSave: false, productionSourceMap: process.env.NODE_ENV == "development" ? true : false, //process.env.NODE_ENV == 'development' ? true : false pluginOptions: { "style-resources-loader": { preProcessor: "less", patterns: [path.resolve(__dirname, "src/styles/mixins.less")] } }, chainWebpack: (config) => { // 开发环境,cach能减少run dev,run build的70%的运行时间 // production 环境,由于文件需要加时间戳,导致缓存没有意义。去掉随机文件名的配置,可以减少60%的打包时间。 // 最终,开发环境,加载cach插件;production环境,不加载! if (!isProd) { config.plugin('cache').use(HardSourceWebpackPlugin); // config.cache(true); } // 移除prefetch插件,避免加载多余的资源 config.plugins.delete('prefetch'); if (isProd) { config.output.filename("js/[name]." + Timestamp + ".js").end(); config.output.chunkFilename("js/[name]." + Timestamp + ".js").end(); config.plugin("extract-css").tap((args) => [ { filename: `css/[name].${Timestamp}.css`, chunkFilename: `css/[name].${Timestamp}.css` } ]); } config.module .rule("fonts") .use("url-loader") .loader("url-loader") .tap((options) => { options["limit"] = 4096; options["publicPath"] = process.env.VUE_APP_BASE_URL_DVP + "/"; // **重点:添加路径 return options; }); // if prod is on // assets require on cdn // if (isProd) { // //isProd // config.plugin("html").tap((args) => { // args[0].cdn = assetsCDN; // return args; // }); // } if (process.env.NODE_ENV === 'production') { config.plugin('compressionPlugin').use( new CompressionPlugin({ filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名,后缀加.gz) algorithm: 'gzip', // 使用gzip压缩 test: /\.(js|css|less)$/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 minRatio: 0.8, // 压缩率小于0.8才会压缩 deleteOriginalAssets: true // 删除源文件 })); } }, css: { loaderOptions: { less: { modifyVars: { 'primary-color': '#1890FF', 'font-family': '宋体', 'border-radius-base': '4px', // 'table-sticky-scroll-bar-bg': '#1890FF', 'link-color': '#1890FF', 'btn-border-radius-base': '4px', // 'btn-primary-bg': 'linear-gradient(180deg, #00BEBE 0%, #1890FF 100%)', 'btn-default-bg': '#FFFFFF', 'btn-default-border': '#1890FF', 'btn-default-color': '#1890FF', 'btn-disable-color': '#9C9FAC', // 'btn-disable-bg': 'rgba(4, 11, 41, 0.12)', // 'btn-disable-border': 'rgba(4, 11, 41, 0.12)', 'select-border-color': '#CED0D8', 'select-item-active-bg': '#F5F6F7', 'select-item-selected-bg': '#F6F7FA', 'select-dropdown-line-height': '#F6F7FA', 'layout-header-height': '56px', 'layout-body-background': '#FFFFFF', //底背景色,原为默认灰底 'table-row-hover-bg':'#F5F6F7', 'form-item-trailing-colon': 'false', 'label-color': '#41475E', 'input-bg': '#FFFFFF', 'input-border-color': '#CED0D8', // 'input-placeholder-color': '#9C9FAC', 'card-background': '#FFFFFF', 'card-radius': '4px', 'card-skeleton-bg': '#9C9FAC', // 'pagination-font-family': '宋体', // 'pagination-item-size': '24px', // 'pagination-item-bg-active': '#1890FF', 'table-row-hover-bg': '#fafafa', // 表单margin底部 'form-item-margin-bottom': '0px', }, javascriptEnabled: true } } }, devServer: { host: 'localhost', port: 8084, disableHostCheck: true, proxy: { "/DFMEA": { target: "http://localhost:8082",//接口的地址 // target: "http://1.117.58.199:8090",//接口的地址 changeOrigin: true, pathRewrite: { "^/DFMEA": "/DFMEA" } } } } };