关于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 相关文章推荐
javascript编程起步(第四课)
Jan 10 Javascript
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JS过滤url参数特殊字符的实现方法
Dec 24 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
vue-hook-form使用详解
Apr 07 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
Aug 11 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
生成卡号php代码
2008/04/09 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
在Python函数中输入任意数量参数的实例
2019/07/16 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
pytorch 预训练层的使用方法
2019/08/20 Python
如何在python中实现随机选择
2019/11/02 Python
Python argparse模块应用实例解析
2019/11/15 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
助人为乐表扬信范文
2014/01/14 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
羊脂球读书笔记
2015/06/30 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
利用Python实现Picgo图床工具
2021/11/23 Python