vue-cli中的webpack的config配置详细说明

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}}}

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

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

相关文章

matlab中 text 使用画图示例

% Plot the image of the Sensitivity and False Positive per image clear; close all; clc; I1 [0.5 75]; I2 [1 54.5];msize 19; %设定字体的大小hold on plot(I1(1),I1(2),ko-,MarkerFaceColor,r) % 红色实心圆点text(I1(1)0.1,I1(2),Wei 2002) hold on plot(I2(1),I2(2)…

计算机视觉界CV牛人牛事

CV人物1:Jianbo Shi史建波毕业于UC Berkeley,导师是Jitendra Malik。其最有影响力的研究成果:图像分割。其于2000年在PAMI上多人合作发表”Noramlized cuts and image segmentation”。这是图像分割领域内最经典的算法。主页:www.…

vscode编辑器,自己喜欢的颜色

"workbench.colorCustomizations": { //覆盖当前所选颜色主题的颜色"editor.background": "#1b1b19", //编辑器背景色"editor.selectionBackground": "#3514c554", //用户选中代码段的颜色 "editor.findMatchBackgroun…

Ubuntu中python切换及pip 安装相应python库

更改python默认版本 只需在终端里面执行 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150 sudo update-alternatives --install /usr/bin/python python …

js消息任务队列

JS单线程、异步、同步概念 多次出现“事件循环”这个名词,简单说明了事件循环的步骤,以便理解nextTick的运行时机,这篇文章将更为详细的分析下事件循环。在此之前需要了解JS单线程,及由此产生的同步执行环境和异步执行环境。 众所…

Ubuntu下安装cmake,配置ITK 和 SimpleITK, VTK(已测试可执行)

curses库 在安装cmake之前应该先安装一下curses库。如果系统中有curses库的话,cmake将生成一个可执行文件ccmake,它是一个基于文本程序的终端,有点类似windows GUI。 sudo apt-get install libncurses5-dev 备注:若无curses库…

定义[nextTick、事件循环]

详情清查收:---》 实例理解nextTick的使用,并给出在页面渲染上的优化巧用 https://www.cnblogs.com/hity-tt/p/6729118.html

世界坐标与图像坐标

1. 右手坐标系 2. 左手坐标系 伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上。其余的手指指向前方。这样就建立了一个左手坐标系。拇指、食指和其余手指分别代表x,y,z轴的正方向。判断方法:在空间直…

module.exports与exports,export与export default之间的关系和区别

CommonJS模块规范和ES6模块规范完全是两种不同的概念。 CommonJS模块规范: 根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。 CommonJS规范规定&#xff0…

Ubuntu下安装 imagej 和 Fiji

安装ImageJ 方法一 sudo apt-get install imagej whereis imagej imagej -version 方法二 下载 Linux版本的 imagej 安装 Instructions cd /home mkdir imagej cp ij150-linux64-java8.zip /home/imagej unzip ij150-linux64-java8.zip 建立软连接,可以在终端…

vue的diff 算法

1. 当数据发生变化时,vue是怎么更新节点的? 要知道渲染真实DOM的开销是很大的,比如有时候我们修改了某个数据,如果直接渲染到真实dom上会引起整个dom树的重绘和重排,有没有可能我们只更新我们修改的那一小块dom而不要…

Ubuntu中python调用SimpleITK来显示图像

misc.imshow ipython import os from scipy import misc dataDir os.environ["HOME"] "/Downloads/SimpleITK-MICCAI-2001-Tutorial-master/Data" print dataDir image misc.imread(dataDir "FA.png") misc.imshow(image) 或者 ipython i…

Websocket--- long loop--ajax轮询

Websocket--- long loop--ajax轮询,long poll 和 ajax轮询 的原理。 1,首先是 ajax轮询 ,ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。 2,long poll 其实原理跟 ajax轮询 差不多…

Linux下设置环境变量

单独查看PATH环境变量,可用: echo $PATH11 方法一:在用户主目录下的 profile或 bashrc文件 sudo gedit ~/.profile 或者 sudo gedit ~/.bashrc123123 可以在此文件末尾加入PATH的设置如下: export PATH”$PATH:your path1:you…

前端解决一像素问题

一、transform:scale 使用伪类 :after 或者 :before 创建 1px 的边框,然后通过 media 适配不同的设备像素比,然后调整缩放比例,从而实现一像素边框 首先用伪类创建边框 .border-bottom{position: relative;border-top: none !important; }.…

Python缩进问题

Python缩进问题 Python中,是通过代码的缩进,来决定代码的逻辑的。通俗的说,Python中的代码的缩进,不是为了好看,而是觉得代码的含义,上下行代码之间的关系。缩进弄错了,就会导致程序出错&#…

Ubuntu下安装Pycharm及相关设置

下载 Pycharm 社区版本 http://www.jetbrains.com/pycharm/download/#sectionlinux 安装指导 Copy the pycharm-community-2016.2.3.tar.gz to the desired installation location (make sure you have rw permissions for that directory) cp /home/bids/Downloads/pycha…

Python 编码规范 PEP 8

PEP 8 – Style Guide for Python Code 详情可查看官网 https://www.python.org/dev/peps/pep-0008/ 用于查看python代码是否符合风格. sudo apt-get install pep8 使用 pep8 --youfile.py 可以得到以下输出 test2.py是自己写的一个文件): test2.py:1:11: E401 multipl…

NIPS 2016 Highlighted Papers

今天看到NIPS官网开放了部分录用文章的Spotlight Videos,迫不及待撸了一遍,特别将一些有趣、有料的highlight出来分享给大家。文章链接均为油管视频,戳前请翻墙(排名不分先后,但根据自己的兴趣在每篇文章后用“★”标记…

深度学习所有文章

所有文章(持续更新中): 聊聊语音识别的发展历程 说说重要的贝叶斯公式吧 我对入门深度学习的切身体会 聊聊隐马尔科夫模型(HMM) 关于防止过拟合的一些想法 我与数据打交道(一) 我与…