关于vue的npm run dev和npm run build的区别介绍


Posted in Javascript onJanuary 14, 2019

关于vue的npm run dev和npm run build的区别介绍,下面就分享给大家,具体如下:

├─build
│  ├─build.js
│  ├─check-versions.js
│  ├─dev-client.js
│  ├─dev-server.js
│  ├─utils.js
│  ├─vue-loader.conf.js
│  ├─webpack.base.conf.js
│  ├─webpack.dev.conf.js
│  ├─webpack.prod.conf.js
│  └─webpack.test.conf.js
├─config
│  ├─dev.env.js
│  ├─index.js
│  ├─prod.env.js
│  └─test.env.js
├─...
└─package.json

以上是关于bulid与run的所有文件

指令分析

package.json里面

"dev": "node build/dev-server.js",

"build": "node build/build.js",

意思:运行”npm run dev”的时候执行的是build/dev-server.js文件,

运行”npm run build”的时候执行的是build/build.js文件。

build文件夹分析

build/dev-server.js

npm run dev 执行的文件build/dev-server.js文件,执行了:

  • 检查node和npm的版本
  • 引入相关插件和配置
  • 创建express服务器和webpack编译器
  • 配置开发中间件(webpack-dev-middleware)和热重载中间件(webpack-hot-middleware)
  • 挂载代理服务和中间件
  • 配置静态资源
  • 启动服务器监听特定端口(8080)
  • 自动打开浏览器并打开特定网址(localhost:8080)

说明: express服务器提供静态文件服务,不过它还使用了http-proxy-middleware,一个http请求代理的中间件。前端开发过程中需要使用到后台的API的话,可以通过配置proxyTable来将相应的后台请求代理到专用的API服务器。

build/webpack.base.conf.js

dev-server依赖的webpack配置是webpack.dev.conf.js文件,

测试环境下使用的是webpack.prod.conf.js

webpack.dev.conf.js中又引用了webpack.base.conf.js

webpack.base.conf.js主要完成了下面这些事情:

  • 配置webpack编译入口
  • 配置webpack输出路径和命名规则
  • 配置模块resolve规则
  • 配置不同类型模块的处理规则

这个配置里面只配置了.js、.vue、图片、字体等几类文件的处理规则,如果需要处理其他文件可以在module.rules里面配置。

build/webpack.dev.conf.js

在webpack.base.conf的基础上增加完善了开发环境下面的配置,主要包括下面几件事情:

将hot-reload相关的代码添加到entry chunks

  • 合并基础的webpack配置
  • 使用styleLoaders
  • 配置Source Maps
  • 配置webpack插件

build/check-versions.js和build/dev-client.js

最后是build文件夹下面两个比较简单的文件,

dev-client.js似乎没有使用到,代码也比较简单,这里不多讲。

check-version.js完成对node和npm的版本检测

build/utils.js和build/vue-loader.conf.js

webpack配置文件中使用到了utils.js和vue-loader.conf.js这两个文件,utils主要完成下面3件事:

  • 配置静态资源路径
  • 生成cssLoaders用于加载.vue文件中的样式
  • 生成styleLoaders用于加载不在.vue文件中的单独存在的样式文件

vue-loader.conf则只配置了css加载器以及编译css之后自动添加前缀。

build/build.js

构建环境下的配置,

build.js主要完成下面几件事:

  • loading动画
  • 删除创建目标文件夹
  • webpack编译
  • 输出信息

build/webpack.prod.conf.js

构建的时候用到的webpack配置来自webpack.prod.conf.js,该配置同样是在webpack.base.conf基础上的进一步完善。主要完成下面几件事情:

  • 合并基础的webpack配置
  • 使用styleLoaders
  • 配置webpack的输出
  • 配置webpack插件
  • gzip模式下的webpack插件配置
  • webpack-bundle分析

说明: webpack插件里面多了丑化压缩代码以及抽离css文件等插件。

config文件夹分析

config/index.js

config文件夹下最主要的文件就是index.js了,

在这里面描述了开发和构建两种环境下的配置,前面的build文件夹下也有不少文件引用了index.js里面的配置。

config/dev.env.js、config/prod.env.js和config/test.env.js

这三个文件就简单设置了环境变量而已,没什么特别的。

这是webpack的基本入门,webpack还有很多插件,还需要去探索

后面写这几个文件的源码解释。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
40款非常棒的jQuery 插件和制作教程(系列二)
Nov 02 Javascript
jQuery操作input type=radio的实现代码
Jun 14 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
jQuery实现带分组数据的Table表头排序实例分析
Nov 24 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
jQuery插件扩展操作入门示例
Jan 16 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
jQuery层叠选择器用法实例分析
Jun 28 jQuery
用npm-run实现自动化任务的方法示例
Jan 14 #Javascript
详解vue-cli 2.0配置文件(小结)
Jan 14 #Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
Jan 14 #Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 #Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 #Javascript
JS实现根据数组对象的某一属性排序操作示例
Jan 14 #Javascript
vue项目中使用vue-i18n报错的解决方法
Jan 13 #Javascript
You might like
PHP如何编写易读的代码
2007/07/10 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
layui中table表头样式修改方法
2018/08/15 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
分享一个常用的Python模拟登陆类
2015/03/29 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
JPA面试常见问题
2016/11/14 面试题
信息服务专业毕业生求职信
2014/03/02 职场文书
基层党员公开承诺书
2014/05/29 职场文书
民间借贷被告代理词
2015/05/23 职场文书
Python实现归一化算法详情
2022/03/18 Python