Vue.js CLI4 Vue.config.js标准配置 (最全注释)

前言:
Vue.js CLI工具 不知不觉发展到了4.0时代,CLI给人最直白的感受是没有了build文件夹跟config文件夹,所有的配置都在Vue.config.js完成。那么该文件的配置至关重要。现在我们来看一下最新配置是怎么配置的。

有三种方式,推荐第二种标准版(无需安装依赖,直接复制即可配置)。

1、依赖库

npm install vue-cli-configjs

2、标准版

// vue.config.js
const path =  require('path');
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
const resolve = (dir) => path.join(__dirname, dir);
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/site/vue-demo/' : '/',  // 公共路径indexPath: 'index.html' , // 相对于打包路径index.html的路径outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本productionSourceMap: !IS_PROD, // 生产环境的 source mapparallel: require("os").cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。pwa: {}, // 向 PWA 插件传递选项。chainWebpack: config => {config.resolve.symlinks(true); // 修复热更新失效// 如果使用多页面打包,使用vue inspect --plugins查看html是否在结果数组中config.plugin("html").tap(args => {// 修复 Lazy loading routes Errorargs[0].chunksSortMode = "none";return args;});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'));},css: {extract: IS_PROD,requireModuleExtension: false,// 去掉文件名中的 .moduleloaderOptions: {// 给 less-loader 传递 Less.js 相关选项less: {// `globalVars` 定义全局对象,可加入全局变量globalVars: {primary: '#333'}}}},devServer: {overlay: { // 让浏览器 overlay 同时显示警告和错误warnings: true,errors: true},host: "localhost",port: 8080, // 端口号https: false, // https:{type:Boolean}open: false, //配置自动启动浏览器hotOnly: true, // 热更新// proxy: 'http://localhost:8080'   // 配置跨域处理,只有一个代理proxy: { //配置多个跨域"/api": {target: "http://172.11.11.11:7071",changeOrigin: true,// ws: true,//websocket支持secure: false,pathRewrite: {"^/api": "/"}},"/api2": {target: "http://172.12.12.12:2018",changeOrigin: true,//ws: true,//websocket支持secure: false,pathRewrite: {"^/api2": "/"}},}}
}

3、升级版

// vue.config.js
const path =  require('path');const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩, 按需引用
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i; // 开启gzip压缩, 按需写入
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; // 打包分析const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
const resolve = (dir) => path.join(__dirname, dir);
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/site/vue-demo/' : '/',  // 公共路径indexPath: 'index.html' , // 相对于打包路径index.html的路径outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本productionSourceMap: !IS_PROD, // 生产环境的 source mapparallel: require("os").cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。pwa: {}, // 向 PWA 插件传递选项。chainWebpack: config => {config.resolve.symlinks(true); // 修复热更新失效// 如果使用多页面打包,使用vue inspect --plugins查看html是否在结果数组中config.plugin("html").tap(args => {// 修复 Lazy loading routes Errorargs[0].chunksSortMode = "none";return args;});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'));// 压缩图片// 需要 npm i -D image-webpack-loaderconfig.module.rule("images").use("image-webpack-loader").loader("image-webpack-loader").options({mozjpeg: { progressive: true, quality: 65 },optipng: { enabled: false },pngquant: { quality: [0.65, 0.9], speed: 4 },gifsicle: { interlaced: false },webp: { quality: 75 }});// 打包分析// 打包之后自动生成一个名叫report.html文件(可忽视)if (IS_PROD) {config.plugin("webpack-report").use(BundleAnalyzerPlugin, [{analyzerMode: "static"}]);}},configureWebpack: config => {// 开启 gzip 压缩// 需要 npm i -D compression-webpack-pluginconst plugins = [];if (IS_PROD) {plugins.push(new CompressionWebpackPlugin({filename: "[path].gz[query]",algorithm: "gzip",test: productionGzipExtensions,threshold: 10240,minRatio: 0.8}));}config.plugins = [...config.plugins, ...plugins];},css: {extract: IS_PROD,requireModuleExtension: false,// 去掉文件名中的 .moduleloaderOptions: {// 给 less-loader 传递 Less.js 相关选项less: {// `globalVars` 定义全局对象,可加入全局变量globalVars: {primary: '#333'}}}},devServer: {overlay: { // 让浏览器 overlay 同时显示警告和错误warnings: true,errors: true},host: "localhost",port: 8080, // 端口号https: false, // https:{type:Boolean}open: false, //配置自动启动浏览器hotOnly: true, // 热更新// proxy: 'http://localhost:8080'   // 配置跨域处理,只有一个代理proxy: { //配置多个跨域"/api": {target: "http://172.11.11.11:7071",changeOrigin: true,// ws: true,//websocket支持secure: false,pathRewrite: {"^/api": "/"}},"/api2": {target: "http://172.12.12.12:2018",changeOrigin: true,//ws: true,//websocket支持secure: false,pathRewrite: {"^/api2": "/"}},}}
}

结语
上述代码可以直接复制,也可以按需引入,一般都用的到,注意里面需要安装的依赖。
**注意第三种方式:**可能在安装以下依赖时,会报错,建议按以下顺序安装。

npm install --save-dev compression-webpack-plugin

npm install --save-dev image-webpack-loader

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript学习系列(22):数组中的reduceRight法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

java模拟开锁

java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: Daniel PlanteAssigned: Monday, September 8, 2014Turn In By: Monday, September 15, 2014 (Zipped project with allfiles by MIDNIGHT)For this lab, you will…

vue中mode的设置

在学过渡效果的时候,里边有一个mode的设置,但是在路由的属性中还有一个mode。 mode的两个值 histroy:当你使用 history 模式时,URL 就像正常的 url,例如 http://localhost:8080/hi,也好看!hash:默认’has…

CSS之Background-clip属性

1.作用:CSS3中的Background-clip属性,其主要是用来确定背景的裁剪区域,换句话说,就是如何控制元素背景显示区域 2.语法:background-clip : border-box || padding-box || content-box 3.取值说明&#xf…

OLE、OCX和ActiveX控件之间的比较

一、过去的OLE和今天的OLE 最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦),使得那些没有太多专业知识的用户能够很容易地协调…

Vista系统自带IIS 7.0设置技巧详解

初用IIS7让人一头雾水,再也没有原来熟悉的属性窗体,替代的是一些很陌生的名词和操作方式。现在不评它这种改变是好是坏,先让它给我们跑起来吧。 首先是安装IIS7,Vista默认的情况下是没有安装IIS7,所以我们要在"控…

Spring Bean初始化过程

一、首先我们来看ClassPathXmlApplicationContext类体系结构 从该继承体系可以看出: 1. BeanFactory 是一个 bean 工厂的最基本定义,里面包含了一个 bean 工厂的几个最基本的方 法,getBean(…) 、 containsBean(…) 等 ,是一个很纯粹的…

关于height:100%和height:100vh的区别

1.em 在做手机端的时候经常会用到的做字体的尺寸单位 说白了 em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5 但是当div进行嵌套的时候,em始终是按照当前div继承的字…

顶宽的div中的英文不能自动换行

1.在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行。但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致…

读取CPU信息

简单的讲下读取CPU信息的一个思路,看了后,相信谁都会说:原来这么简单呀,我也会。哈哈,进入正题,看图: 看清楚了吗,原来CPU信息在注册表里就有。如果你只是要简单的CPU信息&#xff0…

samba3.2的安装全过程(tar方式)

samba服务器,我相信大家都不陌生,主要用来实现windows和linux之间的资源共享,网上比较多的是采用rpm安装包的方式安装,我个人也觉得rpm方式安装比较方便容易,如果没什么特别需求,还是用这种吧!我这里介绍的是采用tar方式的安装.首先下载一个samba的安装文件:samba-3.2.0.tar.gz…

ThinkPHP函数详解:C方法

毫无疑问,C方法是thinkphp中操作配置项的方法,较为常用。 C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。Thi…

CSS之media Query

CSS3中的Media Queries增加了更多的媒体查询,同时你可以添加不同的媒体类型的表达式用来检查媒体是否符合某些条件,如果媒体符合相应的条件,那么就会调用对应的样式表。换句简单的说,“在CSS3中我们可以设置不同类型的媒体条件&am…

全局scss封装引入背景图片路径报错

最近使用scss做了全局的mixin封装,用到背景图,意外发现通过相对路径引入图片后报错,大致意思为图片路径不对,改为了使用代替src路径引入图片依然报错,一番百度后带出解决方案通过 ~ 代替src路径进行图片引入 如下所示…

VC6编译卡死之解决办法

From: http://www.hackpig.cn/post/601.html 一直以来用的VC6都是随便下载了一下VC6SP6,据介绍说是集成了sp6的,结果多次在编译的时候被卡死,不能关闭,只能从任务管理器直接结束,感觉很麻烦,简直就是影响人…

Visual Studio 2010 中的 SharePoint 开发

Chai同学已经在他的blog上贴了文章,讲述VS2010中,针对SharePoint开发的一些增强。虽说VS2010还有一点点远,但是先了解一下也是不错的。嗯,在VS2008上,应该至少还会发布一个VSeWSS 1.4出来。 新的项目模板类型&#xf…

随随笔

杂话 好久没来,也荒废了半年多了这里。因为SegmentFault支持MarkDown,遂在那开了博。最近打算还是回这边吧,以前写的文章、心情都在这,而且发现对MarkDown支持也很好(以前不知怎么没弄好这边的编辑器)。 也…