npm run dev 的时候究竟做了什么
引言
npm run dev命令应该是我们工作当中最常使用的命令,但是具体是如何运行的相信很多小伙伴都没有深入了解过,下面就npm run dev的底层运行由浅入深地进行讲解。
理解
在npm run dev的时候,首先会去项目的package.json文件里找scripts 里找对应的 dev ,然后执行 dev 的命令。
例如启动vue项目 npm run serve的时候,实际上就是执行了vue-cli-service serve 这条命令。
package.json文件
{"name": "h5","version": "1.0.7","private": true,"scripts": {"dev": "vue-cli-service serve"},
}
灵魂第一问
那可能有的小伙伴会问了,为什么不直接执行vue-cli-service serve
命令呢?
答:因为 直接执行vue-cli-service serve
,会报错,因为操作系统中没有存在vue-cli-service
这一条指令
灵魂第二问
那可能有的小伙伴又会问了,既然vue-cli-service serve
这条指令不存在操作系统中,为什么执行npm run dev
的时候,也就是相当于执行了vue-cli-service serve
,为什么这样它就能成功,而且不报指令不存在的错误?
答:
- 我们在安装依赖的时候,是通过npm install 来执行的,npm 在安装依赖的时候,会在
node_modules/.bin/
目录中创建好vue-cli-service
为名的几个可执行文件。 .bin
目录不是任何一个 npm 包。目录下的文件,表示一个个软链接,打开文件可以看到文件顶部写着#!/bin/sh
,表示这是一个脚本。- 所以当使用
npm run dev
执行vue-cli-service serve
时,虽然没有安装vue-cli-service
的全局命令,但是 npm 会到./node_modules/.bin
中找到vue-cli-service
文件作为 脚本来执行,则相当于执行了./node_modules/.bin/vue-cli-service serve
。
灵魂第三问
那可能有的小伙伴又会较真的问了,既然.bin
目录下的文件表示软连接,那这个bin目录下的那些软连接文件是哪里来的呢?它又是怎么知道这条软连接是执行哪里的呢?
答:
- bin目录下的那些软连接存在于项目最外层的package-lock.json文件中。
- 从 package-lock.json 中可知,当我们
npm install
整个新建的vue项目的时候,npm 将 bin/vue-cli-service.js 作为 bin 声明了。 - 所以在
npm install
时,npm 读到该配置后,就将该文件软链接到 ./node_modules/.bin 目录下,而 npm 还会自动把node_modules/.bin加入$PATH,这样就可以直接作为命令运行依赖程序和开发依赖程序,不用全局安装了。 - 也就是说,npm install 的时候,npm 就帮我们把这种软连接配置好了,其实这种软连接相当于一种映射,执行npm run dev 的时候,就会到 node_modules/bin中找对应的映射文件,然后再找到相应的js文件来执行。
至此经过灵魂三问相信您对于npm run dev的底层运行已经有了一些理解。
结语
本文为笔者个人学习笔记,如有谬误,还请告知,万分感谢!如果本文对你有所帮助,还请点个关注点个赞~,您的支持是笔者不断更新的动力。
npm run dev 的时候究竟做了什么相关推荐
- vue项目工程中npm run dev 到底做了什么
npm install 安装了webpack框架中package.json中所需要的依赖 2.安装完成之后,需要启动整个项目运行,npm run 其实执行了package.json中的script脚本 ...
- npm run dev/build/serve
npm run dev/build/serve 1.ERR引发的思考 npm run dev npm ERR! missing script: devnpm ERR! A complete log o ...
- 【Vue】npm run serve 和 npm run dev 有什么区别
[Vue]npm run serve 和 npm run dev 有什么区别 Q: 我的粉丝私信我,项目中运行的npm run serve 和 npm run dev 有什么区别?什么时候用npm r ...
- vue npm run dev 报错 semver\semver.js:312 throw new TypeError('Invalid Version: ' + version)
npm run dev运行报错信息如下图: 原因分析: 版本问题 解决办法: 在semver.js(node_modules/semver/semver.js)里做了一些改动,代码如下: // if ...
- 【webpack】输入npm run dev报错: This is probably not a problem with npm. There is likely additional loggin
今天做项目的过程中,发现输入了npm run dev,报错提示.然后尝试去修改这个bug. 1.删除node_modules rm -rf node_modules 2.删除package-lock. ...
- vue让你理解npm run dev 和 npm run serve
npm run dev 是vue-cli2.0版本使用的 npm run serve 是vue-cli3.0版本使用的 dev build serve? 在我们运行一些 vue 项目的时候, ...
- npm run dev 和 npm run serve
1.ERR引发的思考 创建好的 vue 项目直接执行 vue run dev 报错?运行 vue run serve 就可以启动...如下 npm run dev npm ERR! missing s ...
- Node.js v17版本npm run dev 报错opensslErrorStack
Node.js 17版本opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ] ...
- 输入npm run dev报错“ensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization“解决方法之一
一.问题描述 [未解决]1.输入java -version没有反应 [已解决]2.输入npm run dev报错 opensslErrorStack: [ 'error:03000086:digita ...
最新文章
- Android7.0多窗口实现原理(一)
- 释疑の采购订单的批量修改
- barrier相關知識點整理(还没搞完)
- 为指定c 语言源程序添加行号,给自己的程序加上行号
- 阿里妈妈技术团队4篇论文入选WSDM 2022
- 华为电视鸿蒙系统好用吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- [渝粤教育] 广东-国家-开放大学 21秋期末考试个人与团队管理10257k2
- php_mysql操作
- 关于a元素href的注意点
- css 宋体_6.CSS字体属性
- javascript 计算每行中的列数
- Spring——依赖注入的三种方式
- eclispe luna 安装subversive和svn connector插件
- python毕业设计作品基于django框架校园网站系统毕设成品(6)开题答辩PPT
- 如何用C语言打印出ASCII码表
- 快手抖音短视频如何解析去除视频水印
- java毕业设计题目
- WIN10系统设置默认文件查看方式
- 蓝桥杯算法训练—关联矩阵
- 磁盘性能分析Disk
热门文章
- Java核心编程随笔
- 腾讯 美团 百度 网易游戏 2015校园招聘南京笔试面试之总结分析
- 微信公众号的留言功能
- 使用@ResponseBody对象转json和@RequestBody进行json转对象案例
- 计算机跳转到用户选择,win7系统开机要选择用户才能进入系统怎么办
- arcade 物理系统_RetroPie和X-Arcade Tankstick-完美的Retro Arcade(加上键绑定,配置和操作方法)
- linux 课程标准,《Linux操作系统及应用》课程标准.doc
- CSS中左上朝向三角形(Top-Left Triangle)的几种制作方式
- uniapp实现左右滑动
- 如何理解光圈、ISO、快门、曝光这几个概念?