Files
ylst-pc/vue.config.js
2022-12-28 13:21:06 +08:00

125 lines
3.4 KiB
JavaScript

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(),
],
},
};