Files
2026-09-01 22:15:50 +08:00

163 lines
4.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const path = require('path')
const webpack = require('webpack')
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// const GitRevisionPlugin = require('git-revision-webpack-plugin')
// const GitRevision = new GitRevisionPlugin()
// const buildDate = JSON.stringify(new Date().toLocaleString())
const createThemeColorReplacerPlugin = require('./config/plugin.config')
function resolve (dir) {
return path.join(__dirname, dir)
}
// const isProd = process.env.NODE_ENV === 'production'
// const assetsCDN = {
// // webpack build externals
// externals: {
// vue: 'Vue',
// 'vue-router': 'VueRouter',
// vuex: 'Vuex',
// axios: 'axios'
// },
// css: [],
// // https://unpkg.com/browse/vue@2.6.10/
// js: [
// '//lib.baomitu.com/vue/2.6.10/vue.min.js',
// '//lib.baomitu.com/vue-router/3.1.3/vue-router.min.js',
// '//lib.baomitu.com/vuex/3.1.1/vuex.min.js',
// '//lib.baomitu.com/axios/0.19.0/axios.min.js'
// ]
// }
// vue.config.js
const vueConfig = {
// 部署应用包时的基本 URL
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
configureWebpack: {
// webpack plugins
plugins: [
// Ignore all locale files of moment.js
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// new webpack.DefinePlugin({
// APP_VERSION: `"${require('./package.json').version}"`,
// GIT_HASH: JSON.stringify(GitRevision.version()),
// BUILD_DATE: buildDate
// })
new CompressionWebpackPlugin({
algorithm: 'gzip',
test: /\.js$|\.html$|\.json$|\.css/,
threshold: 10240,
minRatio: 0.8
})
]
// // 看这里:把chunk-vendors.js进行分包,提升资源加载速度,很有必要
// optimization: {
// splitChunks: {
// chunks: 'async',
// minSize: 20000,
// maxSize: 100000,
// minChunks: 1,
// maxAsyncRequests: 30,
// maxInitialRequests: 30,
// automaticNameDelimiter: '~',
// cacheGroups: {
// vendors: {
// test: /[\\/]node_modules[\\/]/,
// priority: -10
// },
// default: {
// minChunks: 2,
// priority: -20,
// reuseExistingChunk: true
// }
// }
// }
// }
// if prod, add externals
// externals: isProd ? assetsCDN.externals : {}
},
chainWebpack: (config) => {
config.resolve.alias
.set('@$', resolve('src'))
const svgRule = config.module.rule('svg')
svgRule.uses.clear()
svgRule
.oneOf('inline')
.resourceQuery(/inline/)
.use('vue-svg-icon-loader')
.loader('vue-svg-icon-loader')
.end()
.end()
.oneOf('external')
.use('file-loader')
.loader('file-loader')
.options({
name: 'assets/[name].[hash:8].[ext]'
})
// if prod is on
// assets require on cdn
// if (isProd) {
// config.plugin('html').tap(args => {
// args[0].cdn = assetsCDN
// return args
// })
// }
},
css: {
// 定位css文件
sourceMap: true,
loaderOptions: {
less: {
modifyVars: {
// less vars,customize ant design theme
// 默认蓝
// 'primary-color': '#1890ff',
// 'link-color': '#1890ff',
'font-size-base': '13px',
'border-radius-base': '2px'
},
// DO NOT REMOVE THIS LINE
javascriptEnabled: true
}
}
},
devServer: {
// development server port 8000
port: 8120
// If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
// proxy: {
// '/api': {
// target: 'https:/www.abc.com/index.php?s=/store',
// ws: false,
// changeOrigin: true,
// pathRewrite: {
// '/api': ''
// }
// }
// }
},
// disable source map in production
productionSourceMap: false,
lintOnSave: false,
// babel-loader no-ignore node_modules/*
transpileDependencies: []
}
// preview.pro.loacg.com only do not use in your production;
if (process.env.VUE_APP_PREVIEW === 'true') {
console.log('VUE_APP_PREVIEW', true)
// add `ThemeColorReplacer` plugin to webpack plugins
vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
}
module.exports = vueConfig