const path = require("path"); function resolve(dir) { return path.join(__dirname, dir); } const name = "孝汉应一体化管控平台"; // page title const port = process.env.port || process.env.npm_config_port || 8080; // dev port module.exports = { publicPath: process.env.NODE_ENV === "development" ? process.env.VUE_APP_PUBLIC_PATH_DEV : process.env.VUE_APP_PUBLIC_PATH_PROD, outputDir: "dist", assetsDir: "static", lintOnSave: process.env.NODE_ENV === "development", productionSourceMap: false, devServer: { port: port, open: true, overlay: { warnings: false, errors: true, }, proxy: { "/bdmp": { //target: 'http://106.15.2.249:60000', // target: 'http://106.15.0.220:60000', target: process.env.VUE_APP_URL, changeOrigin: true, }, "/ecs": { //target: 'http://106.15.2.249:60000',// 联合开发环境 // target: 'http://106.15.0.220:60000', // 测试环境 target: process.env.VUE_APP_URL, changeOrigin: true, }, // 摄像头视频播放地址 "/ydjk": { // target: 'http://106.15.2.249:60000', target: process.env.VUE_APP_URL, changeOrigin: false, }, "/prod/hbjttz": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/order": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/report": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/rwn/gis": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/rwn/fontTtf": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/rwn/weather-tqyj": { target: process.env.VUE_APP_URL, changeOrigin: true, }, // 视频监控 "/videoProject": { target: process.env.VUE_APP_URL, changeOrigin: true, }, // 鄂州机场静态视频 "/rwndemo": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/proxy4": { target: process.env.VUE_APP_URL, changeOrigin: true, }, "/openapi": { target: "http://jiaotong.baidu.com", //访问地址 changeOrigin: true, }, "/proxy_wlts": { target: process.env.VUE_APP_WLTS_API, changeOrigin: true, pathRewrite: { // "/proxy_wlts": "", }, }, // 设备分析 科技公司接口相关 "/proxy_jtkj_service": { target: process.env.VUE_APP_URL, changeOrigin: true, }, }, }, configureWebpack: { name: name, resolve: { alias: { "@": resolve("src"), _c: resolve("src/components"), _R: resolve("src/views/road-network"), }, }, }, chainWebpack(config) { config.plugin("preload").tap(() => [ { rel: "preload", fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/], include: "initial", }, ]); config.plugins.delete("prefetch"); config.module.rule("svg").exclude.add(resolve("src/icons")).end(); config.module .rule("icons") .test(/\.svg$/) .include.add(resolve("src/icons")) .end() .use("svg-sprite-loader") .loader("svg-sprite-loader") .options({ symbolId: "icon-[name]", }) .end(); config.when(process.env.NODE_ENV !== "development", (config) => { config .plugin("ScriptExtHtmlWebpackPlugin") .after("html") .use("script-ext-html-webpack-plugin", [ { inline: /runtime\..*\.js$/, }, ]) .end(); config.optimization.splitChunks({ chunks: "all", cacheGroups: { libs: { name: "chunk-libs", test: /[\\/]node_modules[\\/]/, priority: 10, chunks: "initial", }, elementUI: { name: "chunk-elementUI", // split elementUI into a single package priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm }, commons: { name: "chunk-commons", test: resolve("src/components"), // can customize your rules minChunks: 3, // minimum common number priority: 5, reuseExistingChunk: true, }, }, }); // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk config.optimization.runtimeChunk("single"); }); }, // 全局less变量 pluginOptions: { "style-resources-loader": { preProcessor: "less", patterns: [path.resolve(__dirname, "./src/styles/color.less")], }, }, css: { loaderOptions: { less: { javascriptEnabled: true, }, postcss: { plugins: [ require("postcss-plugin-px2rem")({ rootValue: 80, // 换算基数,默认100,这样的话把根标签的字体规定为1rem为50px,这样就可以从设计稿上量出多少个px直接在代码中写多上px了。 // unitPrecision: 5, //允许REM单位增长到的十进制数字。 //propWhiteList: [], //默认值是一个空数组,这意味着禁用白名单并启用所有属性。 // propBlackList: [], //黑名单 exclude: /(node_modules)/, //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)\/如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值 // selectorBlackList: [], //要忽略并保留为px的选择器 // ignoreIdentifier: false, //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。 // replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。 mediaQuery: false, //(布尔值)允许在媒体查询中转换px。 minPixelValue: 3, //设置要替换的最小像素值(3px会被转rem)。 默认 0 }), ], }, }, }, };