加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
vue.config.js 5.65 KB
一键复制 编辑 原始数据 按行查看 历史
赤炼仙子李莫愁 提交于 2020-09-27 23:23 . 2
/**
*created by xuqiang 19/05/08
*/
const path = require('path');
const CircularDependencyPlugin = require('circular-dependency-plugin');
const CompressionPlugin = require("compression-webpack-plugin");
const webpack = require('webpack');
const resolve = dir => {
return path.join(__dirname, dir)
};
let outputDir = process.env.outputDir;
let BASE_PATH = './' ;
module.exports = {
publicPath: BASE_PATH,
// outputDir: "E:\\web-code\\build-code\\"+outputDir, // 输出文件目录 在当前根目录下生成打包后的工程 开发者自定义存放打包后的工程的路径 可按需修改
outputDir: "./"+outputDir, // 输出文件目录 在当前根目录下生成打包后的工程 开发者自定义存放打包后的工程的路径 可按需修改
lintOnSave: true, //是否在保存的时候检查 检查出的错误会触发编译失败。
chainWebpack(config){
config.plugin('html').tap(args => {// 解决动态加载组件出现循环依赖的问题
args[0].chunksSortMode = 'none';
return args
});
config.resolve.alias
.set('@', resolve('src')) // key,value自行定义,比如.set('@@', resolve('src/components'))
.set('_c', resolve('src/components'))
.set('_conf', resolve('config'));
// 添加svg新的loader处理
const svgRule = config.module.rule('svg'); // 找到svg-loader
svgRule.uses.clear() ;// 清除已有的loader, 如果不这样做会添加在此loader之后
svgRule.exclude.add(/node_modules/) ;// 正则匹配排除node_modules目录
svgRule
.test(/\.svg$/)
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]',
})
.end();
// 开启图片压缩
const imagesRule = config.module.rule('images');
imagesRule.exclude.add(resolve('src/assets/icons'));//修改images loader 添加svg处理
imagesRule
.test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
.use('image-webpack-loader')
.loader('image-webpack-loader')
.options({ bypassOnDebug: true })
.end();
// 修改file loader 添加svg处理 "file-loader": "^2.0.0",其他版本bgurl编译会background: url([object Module])
const fileRule = config.module.rule('file');
fileRule.uses.clear();
fileRule
.test(/\.svg$/)
.exclude.add(resolve('src/assets/icons'))
.end()
.use('file-loader')
.loader('file-loader')
.end();
// 开启js、css压缩
if (process.env.NODE_ENV === 'serve_pro'||process.env.NODE_ENV === 'build_pro') {
config.plugin('compressionPlugin')
.use(new CompressionPlugin({
test:/\.js$|\.html$|.\css/, // 匹配文件名
threshold: 10240, // 对超过10k的数据压缩
deleteOriginalAssets: false // 不删除源文件
}))
}
},
configureWebpack: {
plugins: [
new CircularDependencyPlugin({
exclude: /a\.js|node_modules/,
failOnError: true,
cwd: process.cwd()
}),
new webpack.ProvidePlugin({ //只是引入了jq ,以防在用某些插件的时候缺少jq支持
jQuery: 'jquery',
$: 'jquery'
})
],
optimization: {
splitChunks: {
cacheGroups: {
commons: {
name: 'commons',
chunks: 'initial',
minChunks: 2
}
}
}
}
},
productionSourceMap: false, // 生产环境是否生成 sourceMap 文件 default:true 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建
css: {
extract: true, // 是否使用css分离插件 ExtractTextPlugin
sourceMap: false, // 开启 CSS source maps?
loaderOptions: { // css预设器配置项
less: {
javascriptEnabled: true,
importLoaders: 1,// 这里的选项会传递给 postcss-loader
},
css:{
importLoaders: 1,// 这里的选项会传递给 css-loader
}
},
modules: false // 启用 CSS modules for all css / pre-processor files.
},
parallel: require('os').cpus().length > 1,
// webpack-dev-server 相关配置
devServer: {
host: '0.0.0.0',
port: 9019, // 端口号
https: false, // https:{type:Boolean}
open: true, //配置自动启动浏览器
hotOnly: false,
proxy: { // 设置代理
'/api': {
target: '<url>', // 域名
ws: true, // 是否启用 websockets
changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRequiresRewrite: {
"^/api": "/"
}
},
'/api2': {
target: '<other_url>'
}
}
},
// 第三方插件配置
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: [
path.resolve(__dirname, "./src/assets/less/global.less") // 这段是自己加的,根据自己文件的位置来修改,用于添加全局样式表
]
}
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化