记录 vue.config.js 各项常用设置,方便使用。
vue.config.js
中的代码整体通过 module.exports
导出一个对象,我们所做的是配置里面的各项 option
// 通过module.exports导出对象
module.exports = {}
1.publicPath
配置打包时的路径。默认值是 '/'
即打包后访问路径没有任何变化。
当这个值改为 ''
或 './'
时,打包后的路径变为相对路径,可以被部署在任意路径。
某些场景会结合 env
使用,例如:
publicPath: process.env.NODE_ENV === "production" ? "/v2" : "/",
/v2
2.outputDir
打包的文件夹名字,默认是 dist
。
也可结合 env
使用:
outputDir: process.env.outputDir || 'dist'
3.assetsDir
打包后放置静态资源 js、css、img、fonts
的文件夹名字(相对于 outputDir
路径)。
assetsDir: 'static'
4.indexPath
打包后生成的 'index.html'
的文件名(相对于 outputDir
路径)。
indexPath: 'index.html'
5.lintOnSave
是否在开发环境下通过 eslint-loader
在每次保存时 lint 代码。它的值可以是 boolean | 'warning' | 'default' | 'error'
lintOnSave: process.env.NODE_ENV !== 'production'
6.chainWebpack
是一个函数,会接收一个基于 webpack-chain 的
ChainableConfig
实例。允许对内部的webpack
配置进行更细粒度的修改。
上面引用 Vue-Cli
官网。点开链接跳到 webpack-chain
的 github
介绍。
我们大多数情况用它配置引用资源的快捷路径。
chainWebpack: config => {
config.resolve.alias // 添加别名
.set('@', resolve('src'))
.set('@assets', resolve('src/assets'))
.set('@components', resolve('src/components'))
.set('@views', resolve('src/views'))
.set('@store', resolve('src/store'));
},
7.css
配置 css
,这是一个对象,主要看里面的配置项。
7.1.extract
是否使用 css
分离插件 ExtractTextPlugin
。这个插件大致的作用是分离 css
样式,防止打包后的样式加载错乱等问题。
css:{
extract: true
},
7.2.requireModuleExtension
使用 CSS Modules
时可以去掉文件名中的 '.module'
css:{
requireModuleExtension: true
},
7.3.loaderOptions
向 css
相关的 loader
传递选项
css:{
loaderOptions:{
css: { // 这里的选项会传递给 css-loader
},
postcss: { // 这里的选项会传递给 postcss-loader
plugins: [require('tailwindcss'), require('autoprefixer')]
},
scss: {
// 这里的选项会传递给 sass-loader
// 加载全局样式
prependData: `@import "~@/assets/css/global.scss";`
},
less: {
// 这里的选项会传递给 less-loader
// 定义全局对象,可加入全局变量
globalVars: {
primary: '#06c'
}
}
}
},
8.devServer
配置 webpack-dev-server
的选项。
devServer: {
host: "0.0.0.0", // 本地 host
port: 3000, // 设置端口号
https: false, // 是否启用 https
open: false, // 启动服务时是否自动打开浏览器
hotOnly: true, // 是否启用热更新
overlay: { // 编译错误时,页面全屏覆盖层
warnings: false,
errors: true
},
proxy: 'http://localhost:4000' // 设置代理
}
devServer
的配置项看上面的注释都很容易理解。主要说说设置代理,上面的 proxy: 'http://localhost:4000'
将任何未知请求 (没有匹配到静态文件的请求) 代理到 http://localhost:4000
官网给出的例子如下:
devServer: {
proxy: {
'/api': {
target: 'http://localhost:4000', // 代理地址
ws: true, // 支持websocket
changeOrigin: true
}
}
}
访问 http://localhost:3000/api
时没有匹配到任何资源,代理到 target
指定的 URL
, ws
设置是否支持 websocket
,changeOrigin
在开启代理后设置是否在本地创建一个虚拟服务端。
9.configureWebpack
这个值可以是对象或函数。
- 如果是对象,会通过
webpack-merge
合并到最终的配置中。
- 如果函数,则会接收被解析的配置作为参数。该函数既可以修改配置并不返回任何东西,也可以返回一个被克隆或合并过的配置版本。
上面还是引用 Vue-Cli
官网。
我只贴出自己代码中用到的:
configureWebpack: {
name: 'some title',
resolve: {
alias: {
"@": resolve("src"),
},
},
},
name
可以在 index.html
中当作标题访问。
resolve
部分和前面 chainWebpack
中设置一样。