const autoprefixer = require("autoprefixer"); const pxtorem = require("postcss-pxtorem"); const path = require('path'); const themePath = path.resolve(__dirname,'src/assets/style/theme.less'); const CompressionWebpackPlugin = require('compression-webpack-plugin') const productionGzipExtensions = ['js', 'css'] const isProduction = process.env.NODE_ENV === 'production' var webpack = require('webpack'); const Timestamp = new Date().getTime(); module.exports = { // publicPath: '/jjt/',//中台调试打开 publicPath: './',//浙里办正式打开 productionSourceMap: false, outputDir: process.env.NODE_ENV === "production" ? "build" : "build", // 关闭eslint检查 lintOnSave: false, // 配置css前缀,px转rem css: { loaderOptions: { less: { // http://lesscss.org/usage/#less-options-strict-units `Global Variables` // `primary` is global variables fields name // modifyVars: { // // 直接覆盖变量 // "text-color": "#111", // "border-color": "#eee", // "nav-bar-text-color": "#c03131", // "van-nav-bar__text": "#c03131", // "nav-bar-title-text-color": "#c03131", // // 或者可以通过 less 文件覆盖(文件路径为绝对路径) // // hack: `true; @import "@/assets/style/my-theme.less";` // } modifyVars: { hack: `true; @import "${themePath}";` } }, postcss: { plugins: [ autoprefixer(), pxtorem({ rootValue: 37.5, propList: ["*"] }) ] } } }, configureWebpack: { externals: { // axios: "axios",// 配置使用CDN "AMap": "AMap" }, resolve:{ alias:{ '@':path.resolve(__dirname, './src'), '@i':path.resolve(__dirname, './src/assets'), } }, output: { // 输出重构 打包编译后的 文件名称 【模块名称.版本号.时间戳】 filename: `static/js/[name].${Timestamp}.js`, chunkFilename: `static/js/[name].${Timestamp}.js` }, plugins: [ // Ignore all locale files of moment.js new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), // 配置compression-webpack-plugin压缩 new CompressionWebpackPlugin({ algorithm: 'gzip', test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), threshold: 10240, minRatio: 0.8 }), new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 5, minChunkSize: 100 }) ] }, // css: { // loaderOptions: { // // 给 less-loader 传递 Less.js 相关选项 // less: { // // http://lesscss.org/usage/#less-options-strict-units `Global Variables` // // `primary` is global variables fields name // // modifyVars: { // // // 直接覆盖变量 // // "text-color": "#111", // // "border-color": "#eee", // // "nav-bar-text-color": "#c03131", // // "van-nav-bar__text": "#c03131", // // "nav-bar-title-text-color": "#c03131", // // // 或者可以通过 less 文件覆盖(文件路径为绝对路径) // // // hack: `true; @import "@/assets/style/my-theme.less";` // // } // modifyVars: { // red: "#03a9f4", // blue: "#3eaf7c", // orange: "#f08d49", // "text-color": "#111" // } // } // } // } // chainWebpack: config => { // const lessRule = config.module.rule("less"); // lessRule.uses.clear(); // lessRule // .test(/\.less$/) // .use("style-loader") // .loader("css-loader") // .loader("less-loader") // .options({ // modifyVars: { // // 直接覆盖变量 // "text-color": "#111", // "border-color": "#eee", // // 或者可以通过 less 文件覆盖(文件路径为绝对路径) // hack: `true; @import "@/assets/style/my-theme.less";` // } // }); // } // // 自定义主题样式 // rules: [ // { // test: /\.less$/, // use: [ // // ...其他 loader 配置 // { // loader: "less-loader", // options: { // modifyVars: { // // 直接覆盖变量 // "text-color": "#111", // "border-color": "#eee", // // 或者可以通过 less 文件覆盖(文件路径为绝对路径) // hack: `true; @import "@/assets/style/my-theme.less";` // } // } // } // ] // } // ] devServer: { disableHostCheck: true, // 代理 proxy: { // 只要请求地址有'api'都会匹配上 "/api": { target: "https://www.jaxc.cn/jjtapi/", //测试(缙驾通临时用) // target: "http://118.31.18.45:6630/", //测试(缙驾通临时用) //target:"https://www.jaxc.cn/student/", // target:"http://121.41.97.244:6085/", //测试环境 //target: "http://121.41.97.244:6630/", //朱工本地 ws: true, // 允许跨域 changeOrigin: true, pathRewrite: { "^/api": "" //通过pathRewrite重写地址,将前缀/api转为/ } }, } } };