关于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 相关文章推荐
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
vue-cli如何快速构建vue项目
Apr 26 Javascript
微信小程序使用swiper组件实现层叠轮播图
Nov 04 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
vue实现公共方法抽离
Jul 31 Javascript
用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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
vue.js实现图书管理功能
2019/09/24 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
Python自动扫雷实现方法
2015/07/25 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Python类反射机制使用实例解析
2019/12/30 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
计算机专业个人求职自荐信
2013/09/21 职场文书
写给保洁员表扬信
2014/01/08 职场文书
联欢晚会主持词
2014/03/25 职场文书
入党介绍人评语
2014/05/06 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis