vue-cli中的webpack的config配置详细说明
打开我们的vue项目文件夹我们可以清楚的看到文件夹下的三个文件,
“dev.env.js”,“index.js”,“prod.env.js”,
我们先打开prod.env.js的文件,看里面的内容:‘use strict’
module.exports = {NODE_ENV: ‘“production”’
}
prod.env.js的内容非常简单,仅仅是导出了一个对象,
里面写明了执行环境是“production(生产环境)”;

接下来看与之对应的“dev.env.js”文件:

‘use strict’
//引入webpack-merge模块
const merge = require(‘webpack-merge’)
//引入刚才打开的prod.env.js
const prodEnv = require(’./prod.env’)module.exports = merge(prodEnv, {NODE_ENV: ‘“development”’
})在“dev.env.js”中,先引入了webpack-merge这个模块。
这个模块的作用是来合并两个配置文件对象并生成一个新的配置文件,
有点儿类似于es6的object.assign();
vue-cli中将一些通用的配置抽出来放在一个文件内,
在对不同的环境配置不同的代码,最后使用webpack-merge来进行合并,
减少重复代码,正如文档中所说,
“webpack遵循不重复原则(Don’t repeat yourself - DRY),不会再不同的环境中配置相同的代码”当然,关于webpack-merge的内容还远不止这些,想了解更多关于这个模块的朋友请访问 https://www.npmjs.com/package/webpack-merge好,让我们接着回到代码中来,引入webpack-merge后这个文件又引入了prod.env.js,接着就将prod.env.js的配置和新的配置,即指明开发环境(development)进行了merge。(我有点儿不太理解为什么要这样做,如果不merge直接写module.exports={NODE_ENV:’"development’}也是可以的,难道是为了优雅降级?)还有一点需要注意是的,development和production一定要加双引号,不然会报错!!!```c开头引入了node中的path模块,然后我们先来看dev下的配置内容:assetsSubDirectory指的是**静态资源文件夹,默认“static”**,assetsPublicPath指的是**发布路径**,proxyTable是我们常用来**配置代理API的地方**,后面的host和port相信大家都知道,我就不细说了,autoOpenBrowser是否自动打开浏览器errorOverlay查询错误notifyOnErrors通知错误
,
poll是跟devserver相关的一个配置,webpack为我们提供的devserver是可以监控文件改动的,但在有些情况下却不能工作,我们可以设置一个轮询(poll)来解决useEslint是否使用eslintshowEslintErrorsInOverlay是否展示eslint的错误提示devtool webpack提供的用来方便调试的配置,它有四种模式,可以查看webpack文档了解更多cacheBusting 一个配合devtool的配置,当给文件名插入新的hash导致清楚缓存时是否生成souce maps,默认在开发环境下为truecssSourceMap 是否开启cssSourceMap我们再来看build下的配置内容:index 编译后index.html的路径,path.resolve(__dirname, ‘…/dist’)中path.resolve(__dirname)指的是index.js所在的绝对路径,再去找“…/dist”这个路径(node相关的知识),assetsRoot打包后的文件根路径,
至于assetsSubDirectory和assetsPublicPath跟dev中的一样,productionSourceMap是否开启source-map,devtool同dev,productionGzip是否压缩,productionGzipExtensions gzip模式下需要压缩的文件的扩展名,设置后会对相应扩展名的文件进行压缩bundleAnalyzerReport 是否开启打包后的分析报告

这个是配置

//config目录下index.js配置文件
// see http://vuejs-templates.github.io/webpack for documentation.
// path是node.js的路径模块,用来处理路径统一的问题
var path = require('path')module.exports = {// 下面是build也就是生产编译环境下的一些配置build: {// 导入prod.env.js配置文件,只要用来指定当前环境,详细见(1)env: require('./prod.env'),// 下面是相对路径的拼接,假如当前跟目录是config,那么下面配置的index属性的属性值就是dist/index.htmlindex: path.resolve(__dirname, '../dist/index.html'),// 下面定义的是静态资源的根目录 也就是dist目录assetsRoot: path.resolve(__dirname, '../dist'),// 下面定义的是静态资源根目录的子目录static,也就是dist目录下面的staticassetsSubDirectory: 'static',// 下面定义的是静态资源的公开路径,也就是真正的引用路径assetsPublicPath: '/',// 下面定义是否生成生产环境的sourcmap,sourcmap是用来debug编译后文件的,通过映射到编译前文件来实现productionSourceMap: true,// Gzip off by default as many popular static hosts such as// Surge or Netlify already gzip all static assets for you.// Before setting to `true`, make sure to:// npm install --save-dev compression-webpack-plugin// 下面是是否在生产环境中压缩代码,如果要压缩必须安装compression-webpack-pluginproductionGzip: false,// 下面定义要压缩哪些类型的文件productionGzipExtensions: ['js', 'css'],// Run the build command with an extra argument to// View the bundle analyzer report after build finishes:// `npm run build --report`// Set to `true` or `false` to always turn it on or off// 下面是用来开启编译完成后的报告,可以通过设置值为true和false来开启或关闭// 下面的process.env.npm_config_report表示定义的一个npm_config_report环境变量,可以自行设置bundleAnalyzerReport: process.env.npm_config_report},dev: {// 引入当前目录下的dev.env.js,用来指明开发环境,详见(2)env: require('./dev.env'),// 下面是dev-server的端口号,可以自行更改port: 8080,// 下面表示是否自定代开浏览器autoOpenBrowser: true,assetsSubDirectory: 'static',assetsPublicPath: '/',// 下面是代理表,作用是用来,建一个虚拟api服务器用来代理本机的请求,只能用于开发模式// 详见(3)proxyTable: {},// CSS Sourcemaps off by default because relative paths are "buggy"// with this option, according to the CSS-Loader README// (https://github.com/webpack/css-loader#sourcemaps)// In our experience, they generally work as expected,// just be aware of this issue when enabling this option.// 是否生成css,map文件,上面这段英文就是说使用这个cssmap可能存在问题,但是按照经验,问题不大,可以使用// 给人觉得没必要用这个,css出了问题,直接控制台不就完事了cssSourceMap: false}
}
(1)下面是prod.env.js的配置内容module.exports = {// 作用很明显,就是导出一个对象,NODE_ENV是一个环境变量,指定production环境NODE_ENV: '"production"'}
(2)下面是dev.env.js的配置内容// 首先引入的是webpack的merge插件,该插件是用来合并对象,也就是配置文件用的,相同的选项会被覆盖var merge = require('webpack-merge')// 导入prod.env.js配置文件var prodEnv = require('./prod.env')// 将两个配置对象合并,最终结果是 NODE_ENV: '"development"'module.exports = merge(prodEnv, {NODE_ENV: '"development"'})
(3)下面是proxyTable的一般用法vue-cli使用这个功能是借助http-proxy-middleware插件,一般解决跨域请求apiproxyTable: {'/list': {target: 'http://api.xxxxxxxx.com', -> 目标url地址changeOrigin: true, -> 指示是否跨域pathRewrite: {'^/list': '/list' -> 可以使用 /list 等价于 api.xxxxxxxx.com/list}}}

vue-cli中的webpack的config配置详细说明相关推荐

  1. scss 是什么?在 Vue.cli 中的安装使用步骤是?有哪几大特性?(gxcw)

    首先什么是scss呢? scss是一种css预处理语言,是一个css的扩展,它在css语法的基础上,允许使用变量,嵌套规则,混合,导入,继承等功能,使得css更加强大和优雅,而且其完全兼容css3. ...

  2. 在 vue/cli 中使用 Module Federation

    webpack5 的新特性,分模块共同开发.多个独立的构建可以组成一个应用程序,这些独立的构建之间不应该存在依赖关系,因此可以单独开发和部署它们.这通常被称作微前端,但并不仅限于此. 我们分为本地模块 ...

  3. Vue Cli 中使用 jQuery

    Vue Cli 中使用 jQuery 方式一: 1.安装 jquery npm install jquery 2.在想要使用 jQuery 的文件里面引入即可: import $ from 'jque ...

  4. Leaflet笔记-把leaflet-tilelayer-wmts移植到vue cli中(含思路)

    目录 前言 过程 前言 关于leaflet的webpackage使用npm安装官方是有明显的解析 但是关于插件特别是TileLayer.WMTS是不提供的,但提供了源码,可以稍微修改下,就能在vue ...

  5. 前端笔记-vue cli中axios批量发送get和post请求及注意事项

    目录 基本概念 关键代码 基本概念 这里安装好axios后,还要安装qs npm install --save qs 在vue cli中在created里面调用方法,他会在页面加载完成后自动调用! 批 ...

  6. Vue CLI 3 安装、创建、配置、安装插件

    一.安装 1.全局安装过旧版本的 vue-cli(1.x 或 2.x)要先卸载它: npm uninstall vue-cli -g //或者 yarn global remove vue-cli 注 ...

  7. maven 如何引入不同版本_React中不同webpack版本如何配置less

    很多人会纳闷为什么网上的webpack配置less的内容中的webpack.config.dev.js和自己的webpack.config.dev.js展示出来的不一样,那是因为webpack版本不一 ...

  8. vue资料整理: scss 是什么?在 Vue.cli 中的安装使用步骤是?有哪几大特性?

    是css 的预编译. 使用步骤: 第一步:先装 css-loader.node-loader.sass-loader 等加载器模块 第二步:在 build 目录找到 webpack.base.conf ...

  9. Web前端笔记-js中加载图片文件(vue cli中同样适用)

    这里主要是在vue cli项目中加载图片的时候会出现304,特别是使用自己写的js加载图片的时候,此博文记录了解决办法. 在js文件中引用文件 import img from '@/assets/im ...

最新文章

  1. ASP错误捕获的几种常规处理方式
  2. Exchange 2013 、Lync 2013、SharePoint 2013 三
  3. C文件 写入 读取 函数
  4. 阿里mysql锁_【mysql】mysql中的锁机制
  5. Android 手写板SDK
  6. git --amend 使用和撤销
  7. mac如何判断本机有没有gpu_属牛人:属牛如何判断一段感情有没有未来
  8. 【matlab笔记】寻找极小值
  9. libcef-编译运行模式-MTD/MT-MDD/MD
  10. 计算机怎么接多元一次方程,Excel求解多元一次、一元二次方程组就是这么简单!...
  11. 安装zstack云平台并搭建云主机
  12. 高德地图开发 —— 获取高德地图开发的 key
  13. 三维建模之曲面的分类
  14. html基础之好看的header
  15. 更改Linux系统的主机名(hostname)两种实用的方法
  16. 你知道wps可以开启护眼模式吗?
  17. 批量转化py2topy3脚本
  18. 管理虚拟机工具xenSever系统+客户端xenCenter
  19. androidnbsp;实时对讲机的实现
  20. node.js目录结构

热门文章

  1. 康力电梯开门不关门 服务器显示开门键动作,康力电梯门机故障代码
  2. mysql故障切换检测_启动并测试MHA对MySQL Master监测与故障切换过程
  3. python关闭线程daemon_python中threading开启关闭线程操作
  4. 深度学习之生成对抗网络(6)GAN训练难题
  5. rabbitmq如何保证消息不被重复消费_RabbitMQ保证消息可靠投递与消费的正确使用姿势...
  6. 『数学』你确定你学会了勾股弦定理!真的吗?看完这个篇文章再回答我!
  7. 我也不知道该咋分类--莫队算法
  8. 疯子的算法总结(九) 图论中的矩阵应用 Part 1 POJ3613 Cow Relays
  9. zookeeper集群部署(分布式)
  10. chmod g+s 、chmod o+t 、chmod u+s