关于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实现拖拽 闭包函数详细介绍
Nov 25 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
Aug 11 Javascript
简单实现js页面切换功能
Jan 10 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
jQuery基于排序功能实现上移、下移的方法
Nov 26 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
Nov 10 Javascript
vue router总结 $router和$route及router与 router与route区别
Jul 05 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
详解JavaScript树结构
2017/01/09 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
考试退步检讨书
2014/01/15 职场文书
乔迁宴答谢词
2014/01/21 职场文书
优秀教师获奖感言
2014/01/31 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
体现团队精神的口号
2014/06/06 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL