#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
})]
},

}

},


}
```

文章版权声明

 1 原创文章作者:快猫,如若转载,请注明出处: https://www.52hwl.com/36858.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年7月15日 上午11:12
下一篇 2023年7月15日 上午11:12