const AutoImport = require('unplugin-auto-import/webpack') const Components = require('unplugin-vue-components/webpack') const { ElementPlusResolver } = require('unplugin-vue-components/resolvers') const MomentLocalesPlugin = require('moment-locales-webpack-plugin'); const LodashModuleReplacementPlugin = require("lodash-webpack-plugin"); const { proxyUrl, proxyUrlDelivery } = require('./src/config'); const { baseOss } = require('./src/config'); const path = require('path'); const mode = process.env.NODE_ENV; console.log(mode); const isDev = mode === 'development' function resolve (dir) { return path.join(__dirname, dir); } module.exports = { // history模式下刷新页面会报错 publicPath: './', productionSourceMap: false, devServer: { disableHostCheck: true, proxy: { '/api': { target: proxyUrl, changeOrigin: true, logLevel: 'debug', pathRewrite: { '^/api': proxyUrl, // 路径重写 }, cookieDomainRewrite: 'localhost', }, // '/daixin': { // target: proxyUrlMessageCenter, // changeOrigin: false, // pathRewrite: { // '^/daixin': proxyUrlMessageCenter, // 路径重写 // }, // }, '/request-java': { target: `${proxyUrlDelivery}/api`, changeOrigin: true, pathRewrite: { '^/request-java': '', // 路径重写 }, }, // '/rng': { // target: 'http://talk.wemark.tech/api/v1', // changeOrigin: true, // pathRewrite: { // '^/rng': '' // } // }, }, }, css: { requireModuleExtension: true, loaderOptions: { less: { lessOptions: { modifyVars: { 'primary-color': '#70b936',// 修改全局主题色 }, javascriptEnabled: true, } }, scss: { prependData: `@import "~@/style/whole/whole.scss";$baseOss:"${baseOss}";` } }, }, chainWebpack: (config) => { config.resolve.alias .set('@', resolve('src')) .set('@views', resolve('src/views')) .set('@scss', resolve('src/scss')) .set('@helper', resolve('src/helper')) .set('@components', resolve('src/components')) .set('@plugins', resolve('src/plugins')) .set('@router', resolve('src/router')) .set('@store', resolve('src/store')) .set('@api', resolve('src/api')) .set('@utils', resolve('src/utils')) .end(); config.plugin("loadshReplace").use(new LodashModuleReplacementPlugin()); config.plugin('html').tap(args => { args[0].title = "智能调研工具"; return args }) // config.module // .rule('vue') // .test(/\.vue$/) // .use('vue-inline-px-to-rem') // .loader('vue-inline-px-to-rem') // .options({ // rootValue: 192.0, // propList: ['font', 'font-size'], // }) // .end() }, configureWebpack: { output: { filename: isDev ? `[name].js` : `[name].[contenthash:8].js`, chunkFilename: isDev ? `[name].js` : `[name].[contenthash:8].js`, }, plugins: [ require('unplugin-element-plus/webpack')({ // options }), AutoImport({ resolvers: [ElementPlusResolver({ importStyle: 'css', exclude: new RegExp(/^(?!.*loading-directive).*$/) })], }), Components({ resolvers: [ElementPlusResolver()], }), new MomentLocalesPlugin(), ], }, };