vue.config.js 的配置
a. baseurl
你想要将项目地址加一个二级目录,比如:
http://localhost:8080/vue/
,那么我们需要在vue.config.js
里配置baseurl
这一项
// vue.config.js
module.exports = {
...
baseUrl: 'vue',
...
}
其改变的其实是
webpack
配置文件中output
的publicPath
项,这时候你重启终端再次打开页面的时候我们首页的url
就会变成带二级目录的形式。
b. outputDir
如果你想将构建好的文件打包输出到
output
文件夹下(默认是dist
文件夹),你可以配置
// vue.config.js
module.exports = {
...
outputDir: 'output',
...
}
然后运行命令
yarn build
进行打包输出,你会发现项目跟目录会创建output
文件夹, 这其实改变了webpack
配置中output
下的path
项,修改了文件的输出路径
c. productionSourceMap
该配置项用于设置是否为生产环境构建生成
source map
,一般在生产环境下为了快速定位错误信息,我们都会开启source map
:
// vue.config.js
module.exports = {
...
productionSourceMap: true,
...
}
该配置会修改
webpack
中devtool
项的值为source-map
d. chainWebpack
chainWebpack
配置项允许我们更细粒度的控制webpack
的内部配置,其集成的是webpack-chain
这一插件,该插件可以让我们能够使用链式操作来修改配置,比如
// 用于做相应的合并处理
const merge = require('webpack-merge');
module.exports = {
...
// config 参数为已经解析好的 webpack 配置
chainWebpack: config => {
config.module
.rule('images')
.use('url-loader')
.tap(options =>
merge(options, {
limit: 5120,
})
)
}
...
}
以上操作我们可以成功修改 webpack 中 module 项里配置 rules 规则为图片下的 url-loader 值,将其 limit 限制改为 5M,修改后的 webpack 配置代码如下:
{
...
module: {
rules: [
{
/* config.module.rule('images') */
test: /.(png|jpe?g|gif|webp)(?.*)?$/,
use: [
/* config.module.rule('images').use('url-loader') */
{
loader: 'url-loader',
options: {
limit: 5120,
name: 'img/[name].[hash:8].[ext]'
}
}
]
}
]
}
...
}
e. configureWebpack
除了上述使用
chainWebpack
来改变webpack
内部配置外,我们还可以使用configureWebpack
来进行修改,两者的不同点在于chainWebpack
是链式修改,而configureWebpack
更倾向于整体替换和修改。示例代码如下
// vue.config.js
module.exports = {
...
// config 参数为已经解析好的 webpack 配置
configureWebpack: config => {
// config.plugins = []; // 这样会直接将 plugins 置空
// 使用 return 一个对象会通过 webpack-merge 进行合并,plugins 不会置空
return {
plugins: []
}
}
...
}
configureWebpack
可以直接是一个对象,也可以是一个函数,如果是对象它会直接使用webpack-merge
对其进行合并处理,如果是函数,你可以直接使用其config
参数来修改webpack
中的配置,或者返回一个对象来进行 merge 处理
你可以在项目目录下运行 vue inspect
来查看你修改后的 webpack
完整配置,当然你也可以缩小审查范围,比如
# 只查看 plugins 的内容
vue inspect plugins
f. devServer
vue.config.js
还提供了devServer
项用于配置webpack-dev-server
的行为,使得我们可以对本地服务器进行相应配置,我们在命令行中运行的yarn serve
对应的命令vue-cli-service serve
其实便是基于webpack-dev-server
开启的一个本地服务器,其常用配置参数如下
// vue.config.js
module.exports = {
...
devServer: {
open: true, // 是否自动打开浏览器页面
host: '0.0.0.0', // 指定使用一个 host。默认是 localhost
port: 8080, // 端口地址
https: false, // 使用https提供服务
proxy: null, // string | Object 代理设置
// 提供在服务器内部的其他中间件之前执行自定义中间件的能力
before: app => {
// `app` 是一个 express 实例
}
}
...
}
当然除了以上参数,其支持所有的 webpack-dev-server
中的选项,比如 historyApiFallback
用于重写路由(会在后续的多页应用配置中讲解)、progress 将运行进度输出到控制台等