96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
const path = require("path");
|
||
|
||
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"));
|
||
|
||
// SVG 文件处理
|
||
config.module.rule('svg')
|
||
.test(/\.svg$/)
|
||
.use('file-loader')
|
||
.loader('file-loader')
|
||
.options({
|
||
context: resolve('src/assets/img'),
|
||
name: 'images/[path][name].[ext]'
|
||
});
|
||
|
||
// 普通图片处理(排除 SVG)
|
||
config.module.rule('images')
|
||
.test(/\.(png|jpe?g|gif)(\?.*)?$/)
|
||
.use('url-loader')
|
||
.loader('url-loader')
|
||
.options({
|
||
limit: 10000,
|
||
esModule: false,
|
||
outputPath: "images/",
|
||
context: resolve('src/assets/img'),
|
||
name: '[path][name].[ext]'
|
||
});
|
||
|
||
},
|
||
|
||
configureWebpack: {
|
||
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,
|
||
};
|