npm run dev 做了什么❓小白也能看懂

大家在做前端项目时,肯定经常用npm run dev这个命令来启动本地开发服务器吧?但你有没有想过,当我们输入这行命令后,背后到底发生了什么呢?

从package.json说起

在我们项目的package.json文件里,通常会有这样的配置:

json 复制代码
{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  }
}

看起来npm run dev就是执行了vite这个命令。但如果你直接在命令行里输入vite,通常会提示"命令未找到"。这是为什么呢?

秘密藏在node_modules里

答案就在项目根目录的node_modules文件夹中。当我们安装依赖包时,npm会在这里创建很多文件夹,其中就包括vite包。

vite包的package.json文件中,有一个重要的配置项bin

json 复制代码
{
  "bin": {
    "vite": "bin/vite.js"
  }
}

这告诉npm:"当你看到有人想运行vite命令时,就去执行bin/vite.js这个文件"。

跨平台的秘密

有趣的是,在vite包的bin目录下,我们实际上会看到三个文件:

  • vite(没有后缀,适用于Unix/Linux系统)
  • vite.cmd(适用于Windows系统)
  • vite.ps1(适用于PowerShell)

这是因为不同操作系统使用不同的脚本语言。npm很聪明,它会根据你当前的操作系统,自动选择正确的文件来执行。

对于Unix/Linux系统,它会使用一个shell脚本;对于Windows,它会使用.cmd文件;对于PowerShell用户,它会使用.ps1文件。

执行流程全解析

所以,整个npm run dev的执行过程是这样的:

  1. 你在终端输入npm run dev
  2. npm去查看package.json中的scripts配置,发现dev对应的是"vite"
  3. npmnode_modules/.bin目录下寻找vite命令
  4. 根据你的操作系统,选择正确的脚本文件执行
  5. 这个脚本文件最终会调用node.js来运行viteJavaScript代码
  6. 你的开发服务器就启动起来了!

如果本地没有怎么办?

如果项目本地没有安装vitenpm会去全局安装的包中寻找。如果你也没有全局安装,那么就会看到我们熟悉的"command not found"错误提示。

总结

简单来说,npm run dev实际上是通过npm执行了一个"快捷方式",这个快捷指向了我们安装在node_modules中的vite包里的一个脚本文件。

npm帮我们处理了不同操作系统的差异,让我们可以用同样的命令在各个平台上工作。

相关推荐
华玥作者14 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_14 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠14 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang2015092814 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC15 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务16 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整16 小时前
面试点(网络层面)
前端·网络
VT.馒头16 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy17 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron070718 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js