广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >前端面试之输入npm run后执行原理
  • 495
分享到

前端面试之输入npm run后执行原理

2024-04-02 19:04:59 495人浏览 八月长安
摘要

引言 在前端开发的工作当中,使用 npm run dev 的命令启动本地开发环境,是再正常不过的事了。那么,当输入完类似 npm run xxx 的命令后,究竟是如何触发各种构建工具

引言

前端开发的工作当中,使用 npm run dev 的命令启动本地开发环境,是再正常不过的事了。那么,当输入完类似 npm run xxx 的命令后,究竟是如何触发各种构建工具的构建命令以及启动 node 服务等功能的呢?

首先我们知道,Node 作为 javascript 的运行时,可以把 .js 文件当做脚本来运行,像这种:

node index.js

当我们使用 npm 来管理项目(或者 yarn)时,会在根目录下生成一个 package.JSON 文件,其中的 scripts 属性,就是用于配置 npm run xxx 命令的,比如我有如下配置:

// package.json
{
  // ...
  "scripts": {
    "start": "node ./src/index.js",
    "build": "React-scripts build",
  },
  // ...
}

当执行 npm start 时,对于 npm 来说,相当于执行 npm run start ,则映射为 scripts 属性下的 start 命令,即

npm start
# 相当于
npm run start
# 相当于
node ./src/index.js

这个比较好理解,就是直接使用全局安装的 Node 命令来执行了 ./src 目录下的 index.js 文件而已。

如上面类似,执行 npm run build 即相当于执行 react-scripts build 命令。这个命令,是使用 create-react-app 搭建 React 项目时默认配置的。与 Node 不同,react-scripts 并没有全局安装,怎么就能直接执行呢?

这时我们不妨看一下,使用 create-react-app 搭建的项目(使用 Vue-cli 搭建的项目也一样),在 npm install 后,其 node_modules 目录下面的样子:

如图可以看到有一个 .bin 目录,这个目录不是任何一个 npm 包。目录下的文件,右面都有一个小箭头(VS Code 上这样显示),表示这是一个软链接,打开文件可以看到文件顶部写着 #!/user/bin/env node ,表示这是一个通过使用 Node 执行的脚本。

由此我们可以知道,当使用 npm run build 执行 react-scripts build 时,虽然没有安装 react-scripts 的全局命令,但是 npm 会到 ./node_modules/.bin 中找到 react-scripts.js 文件作为 Node 脚本来执行,则相当于执行了 ./node_modules/.bin/react-scripts build(最后的 build 作为参数传入)。

npm run build
# 相当于
./node_modules/.bin/react-scripts build

前面说过,react-scripts 是一个软链接,那么它的指向是哪里,又是怎么来的呢?

我们可以在 node_modules 目录下,直接找到 react-scripts 包,查看其目录结构和 package.json 如下:

package.json 中可知,这个包将 ./bin/react-scripts.js 作为 bin 声明了。所以在 npm install 时,npm 读到该配置后,就将该文件软链接到 ./node_modules/.bin 目录下,而 npm 还会自动把node_modules/.bin加入$PATH,这样就可以直接作为命令运行依赖程序和开发依赖程序,不用全局安装了。

假如我们在安装包时,使用 npm install -g xxx 来安装,那么会将其中的 bin 文件加入到全局,比如 create-react-appvue-cli ,在全局安装后,就可以直接使用如 vue-cli projectName 这样的命令来创建项目了。

以上就是前端面试之输入npm run后执行原理的详细内容,更多关于npm run执行原理的资料请关注编程网其它相关文章!

--结束END--

本文标题: 前端面试之输入npm run后执行原理

本文链接: https://www.lsjlt.com/news/153461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 前端面试之输入npm run后执行原理
    引言 在前端开发的工作当中,使用 npm run dev 的命令启动本地开发环境,是再正常不过的事了。那么,当输入完类似 npm run xxx 的命令后,究竟是如何触发各种构建工具...
    99+
    2022-11-13
  • 输入npm run xxx后执行原理深入解析
    目录前言package.json文件总结前言 当我们输入npm run XXX会首先去package.json文件里找scripts 里找对应的xxx,然后执行 xxx的命令,例如我...
    99+
    2022-11-13
  • 前端面试运行npm run xxx发生过程原理解析
    目录引言package.json文件总结引言 事情是这样的,直接开讲 面试官:npm run xxx的时候,发生了什么?讲的越详细越好。 我(心想,简单啊): 首先,DNS 解析,将...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作