【转载】npm run dev 的时候究竟做了什么

转自 https://blog.csdn.net/web2022050901/article/details/125165316

引言

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的底层运行已经有了一些理解。
点赞
  1. AceSorcerer说道:
    Google Chrome Windows 10
    https://t.me/s/ef_beef
  2. Flagmanded说道:
    Google Chrome Windows 10
    https://t.me/s/flagman_official_registration
  3. LuckyBandit说道:
    Google Chrome Windows 10
    https://t.me/s/iGaming_live/4866
  4. AceSorcerer说道:
    Google Chrome Windows 10
    https://t.me/s/dragon_money_mani
  5. PokerPhantom说道:
    Google Chrome Windows 10
    http://images.google.ki/url?q=https://t.me/s/officials_7k/66
  6. PokerPhantom说道:
    Google Chrome Windows 10
    В джунглях азарта, где всякий сайт стремится привлечь гарантиями простых джекпотов, рейтинг казино интернет является как раз той путеводителем, что ведет мимо заросли рисков. Для хайроллеров и начинающих, которые надоел из-за фальшивых обещаний, он помощник, чтобы почувствовать настоящую выплату, как вес золотой монеты на руке. Без лишней болтовни, только реальные клубы, там rtp не просто число, но реальная удача.Подобрано из поисковых запросов, как паутина, что ловит топовые свежие тенденции на интернете. Здесь отсутствует места для шаблонных фишек, каждый элемент словно карта у игре, в котором блеф проявляется мгновенно. Хайроллеры понимают: в России стиль речи с сарказмом, в котором юмор притворяется под рекомендацию, позволяет миновать рисков.В https://don8play.gitbook.io/don8play-docs/untitled данный список находится будто готовая карта, подготовленный к старту. Загляни, коли желаешь увидеть пульс реальной азарта, минуя обмана и провалов. Для кто любит вес приза, такое как держать карты на пальцах, а не пялиться в экран.

发表回复

电子邮件地址不会被公开。必填项已用 * 标注