#yyds干货盘点#vue.config.js 的完整配置
Posted 尼羲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#vue.config.js 的完整配置相关的知识,希望对你有一定的参考价值。
今天分享一下,我们项目当中的一些webpack
配置,希望能给大家有所启发;只要配置多了,你就会发现其实所有的配置的都是相似的,尤其像插件的配置,都是十分相似的。
我们现在开始进入今天的主题啦~~
1 介绍
之前,我有提到过,当然大家肯定也都知道,Vue3.0不在有webpack.config.js
的配置;但是不可避免,在项目开发中我们肯定会存在一些特殊的需求需要调整webpack
, 这个时候,在Vue3.0的项目当中,我们就需要在根目录创建vue.config.js
去完成webpack
的一些特殊配置,默认它会被 @vue/cli-service
自动加载。
此刻,你需要创建vue.config.js
文件。
查看默认的webpack配置
Vue CLI 官方文档:vue-cli-service 暴露了 inspect 命令用于审查解析好的 webpack 配置。那个全局的 vue 可执行程序同样提供了 inspect 命令,这个命令只是简单的把 vue-cli-service``inspect 代理到了你的项目中。
被抽象化的webpack
,我们要想去理解它默认的一些配置的话是比较困难的,所以我们可以通过指令去查看。
该指令会将webpack
的配置输出到output.js
文件,这样方便去查看。
vue inspect > output.js
vue.config.js文件
这个文件导出了一个包含了选项的对象:
module.exports =
// 选项...
接下来,详细介绍一些选项及配置:
2 基本配置
module.exports =
productionSourceMap: false,
publicPath: ./,
outputDir: dist,
assetsDir: assets,
devServer:
port: 8090,
host: 0.0.0.0,
https: false,
open: true
,
// 其他配置
...
- productionSourceMap:生产环境是否要生成
sourceMap
- publicPath:部署应用包时的基本 URL,用法和
webpack
本身的output.publicPath
一致
- 可以通过三元运算去配置
dev
和prod
环境,publicPath: process.env.NODE_ENV === production ? /prod/ : ./
- outputDir:
build
时输出的文件目录 - assetsDir: 放置静态文件夹目录
- devServer: dev环境下,
webpack-dev-server
相关配置
- port: 开发运行时的端口
- host: 开发运行时域名,设置成
0.0.0.0
,在同一个局域网下,如果你的项目在运行,同时可以通过你的http://ip:port/...访问你的项目
- https: 是否启用
https
- open:
npm run serve
时是否直接打开浏览器
3 插件及规则的配置
在vue.config.js
如果要新增/修改
webpack
的 plugins
或者 rules
, 有2种方式。
configureWebpack
方式
configureWebpack 是相对比较简单的一种方式
- 它可以是一个
对象
:和webpack
本身配置方式是一致,该对象将会被webpack-merge
合并入最终的webpack
配置 - 它也可以是一个
函数
:直接在函数内部进行修改配置
configureWebpack:
rules:[],
plugins: []
configureWebpack: (config) =>
// 例如,通过判断运行环境,设置mode
config.mode = production
chainWebpack
方式
chainWebpack 链式操作 (高级),接下来所有的配置我都会在该选项中进行配置
4 一个完整的vue.config.js
```
配置
//导入node下面的相关包
const merge = require(webpack-merge) // base64
const path = require(path);
const webpack=require(webpack)
//安装postcss-px2rem
const px2rem = require(postcss-px2rem)
//安装postcss
const postcss = require(postcss)
function resolve (dir)
return path.join(__dirname, dir)
module.exports =
// 基本路径
baseUrl: /,
// 输出文件目录
outputDir: dist,
// eslint-loader 是否在保存的时候检查
lintOnSave: true,
// use the full build with in-browser compiler?
// https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
compiler: false,
// webpack配置
// see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
chainWebpack: () => ,
configureWebpack: () => ,
// vue-loader 配置项
// https://vue-loader.vuejs.org/en/options.html
vueLoader: ,
// 生产环境是否生成 sourceMap 文件
productionSourceMap: true,
// css相关配置
css:
// 是否使用css分离插件 ExtractTextPlugin
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: ,
// 启用 CSS modules for all css / pre-processor files.
modules: false
,
// use thread-loader for babel & TS in production build
// enabled by default if the machine has more than 1 cores
parallel: require(os).cpus().length > 1,
// 是否启用dll
// See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode
dll: false,
// PWA 插件相关配置
// see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
pwa: ,
// webpack-dev-server 相关配置
devServer:
open: process.platform === darwin,
host: 0.0.0.0,
port: 8080,
https: false,
hotOnly: true,
proxy: null, // 设置代理
before: app => ,
proxy:
//第三方跨域代码
,
// 第三方插件配置
pluginOptions:
// ...
module.exports =
lintOnSave: true,
chainWebpack: (config)=>
//在vue cli3中配置webpack目录别名alias的方式
config.resolve.alias
.set(@$, resolve(src))
.set(assets,resolve(src/assets))
.set(components,resolve(src/components))
.set(common,resolve(src/common))
.set(api,resolve(src/base/api))
.set(directive,resolve(src/base/directive))
.set(filter,resolve(src/base/filter))
.set(api,resolve(src/base/api))
.set(iconfont,resolve(src/base/iconfont))
.set(js,resolve(src/base/js))
.set(css$,resolve(src/base/css))
.set(minxins,resolve(src/base/minxins))
//base64相关代码
config.module
.rule(images)
.test(/\\.(png|jpe?g|gif|webp)(\\?.*)?$/)
.use(url-loader)
.loader(url-loader)
.tap(options =>
merge(options,
limit: 10000,
)
)
,
module.exports =
//配置在移动端以[640,750]方式来处理rem的基本代码体
css:
loaderOptions:
postcss:
// options here will be passed to postcss-loader
plugins: [require(postcss-px2rem)(
remUnit: 75
)]
,
,
```
以上是关于#yyds干货盘点#vue.config.js 的完整配置的主要内容,如果未能解决你的问题,请参考以下文章