#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/ : ./​
  • outputDirbuild 时输出的文件目录
  • 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 的完整配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring的七大模块#yyds干货盘点#

#yyds干货盘点# Phaser详解

#yyds干货盘点# 泛型通配符

#yyds干货盘点#linux命令--uname

#yyds干货盘点#linux命令--hdparm

#yyds干货盘点#C++ static