Files
official_network/vue.config.js
张成 be1b4b6e9c 1
2026-04-28 18:36:01 +08:00

105 lines
3.5 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 CopyWebpackPlugin = require('copy-webpack-plugin');
const resolve = (dir) => {
return path.join(__dirname, dir);
};
// 项目部署基础
const BASE_URL = process.env.NODE_ENV === "development" ? "/" : "/";
const sourceMap = process.env.NODE_ENV === "development";
const ResponsiveLoaderSharp = require('responsive-loader/sharp');
module.exports = {
publicPath: BASE_URL,
lintOnSave: false, // 是否启用 eslint
chainWebpack: (config) => {
// 禁用 CaseSensitivePathsPlugin
config.plugins.delete('case-sensitive-paths');
// 别名
config.resolve.alias.set("@", resolve("src"));
config.resolve.alias.set("_c", resolve("src/components"));
// 统一图片产物目录dist/images保留子目录不带 hash
// 说明Vue CLI 默认会把被打包的图片输出到 dist/img带 hash
// 这里覆盖为与 CopyWebpackPlugin 一致的 images 目录,避免出现 dist/img。
config.module.rule('images')
.test(/\.(png|jpe?g|gif|webp)(\?.*)?$/)
.use('url-loader')
.loader('url-loader')
.options({
limit: 10000,
esModule: false,
outputPath: 'images',
context: resolve('src/assets/img'),
name: '[path][name].[ext]'
});
config.module.rule('svg')
.test(/\.svg$/)
.use('file-loader')
.loader('file-loader')
.options({
context: resolve('src/assets/img'),
name: 'images/[path][name].[ext]'
});
},
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: resolve('src/assets/img'),
to: 'images'
}
])
],
output: {
filename: "js/[hash].js",
}
},
css: {
loaderOptions: {
postcss: {
postcssOptions: {
plugins: [
require('autoprefixer'),
require('postcss-pxtorem')({
rootValue: 16,
propList: ['*'],
selectorBlackList: [],
replace: true,
mediaQuery: false,
minPixelValue: 1,
exclude: /node_modules/i
})
]
}
},
less: {
lessOptions: {
javascriptEnabled: true,
modifyVars: {
'@primary-color': '#3498db',
'@success-color': '#52c41a',
'@warning-color': '#faad14',
'@error-color': '#f5222d',
'@font-size-base': '14px',
'@heading-color': '#262626',
'@text-color': '#595959',
'@text-color-secondary': '#8c8c8c',
'@disabled-color': '#bfbfbf',
'@border-radius-base': '4px',
'@border-color-base': '#d9d9d9',
'@box-shadow-base': '0 2px 8px rgba(0, 0, 0, 0.15)'
}
}
}
}
},
productionSourceMap: sourceMap,
};