npm run xx 的执行流程

npm run xx 的执行流程

npm run xxx 的这个xxx是在package.json中配置的。
package.json中的scripts中的key为xxx,value为实际的命令。

npm run xxx的时候,首先会去项目的package.json文件里找scripts 里找对应的xxx,然后执行 xxx的命令,例如启动vue项目 npm rum serve 实际上执行了npm run vue-cli-service serve --open

vue-cli 2.0

"script":{
  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  "start": "npm run dev",
  "build": "node build/build.js"
}

vue-cli 3.0

"script":{
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
	"lint": "vue-cli-service lint"
}

为什么不直接执行vue-cli-service serve而要执行npm run serve
因为操作系统中没有vue-cli-service指令,直接执行会报错。

**为什么执行npm rum serve的时候可以成功?
**
在安装依赖的时候,会在node_modules/.bin/目录中创建几个vue-cli-service为名的可执行文件,bin目录下的文件表示软连接。
使用npm run serve执行vue-cli-service serve时,会到./node_modules/.bin 中找到 vue-cli-service. 文件作为 脚本来执行,则相当于执行了./node_modules/.bin/vue-cli-service serve(最后的 serve 作为参数传入)

这个bin目录下的那些软连接文件是哪里来的呢?它又是怎么知道这条软连接是执行哪里的呢?
在库的源代码的package.json中,可以找到bin字段,用于在安装时创建软链接指向bin中的地址。
在这里插入图片描述
npm i 的时候,npm 就帮我们把这种软连接配置好了,其实这种软连接相当于一种映射,执行npm run xxx 的时候,就会到 node_modules/bin中找对应的映射文件,然后再找到相应的js文件来执行。


作者:阳光是sunny 链接:https://juejin.cn/post/7078924628525056007 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
当你在项目目录下执行 `npm run serve` 命令时,如果遇到无法执行的情况,可能是由于以下几个原因: 1. 缺少 `serve` 脚本配置:确保你的项目的 `package.json` 文件中有正确的 `serve` 脚本配置。通常,你需要在 `scripts` 部分添加如下代码: ```json "scripts": { "serve": "vue-cli-service serve" // 以Vue项目为例 } ``` 如果 `serve` 脚本没有正确配置,或者配置的命令不正确,会导致无法执行。 2. 项目依赖未安装:执行 `npm run` 命令前,确保所有的依赖都已通过 `npm install` 安装完成。如果没有安装,你将看到错误提示,说明缺少相应的依赖包。 3. 命令行环境问题:确保你的命令行环境已经定位到项目的根目录,并且环境变量中包含了Node.js和npm的路径。如果不是,你可能需要先切换到项目目录或者重新设置环境变量。 4. 权限问题:如果是在某些受限的环境中,可能需要以管理员或者root权限运行命令行工具。 5. 兼容性问题:确保你使用的Node.js和npm的版本与项目要求的版本兼容,不兼容的版本可能会导致某些命令无法正确执行。 针对上述可能的原因,你可以按照以下步骤排查和解决问题: 1. 检查 `package.json` 文件中的 `scripts` 部分是否含有 `serve` 脚本。 2. 在项目根目录下运行 `npm install` 或 `npm i` 命令确保依赖正确安装。 3. 确认命令行工具已经处于项目的根目录下。 4. 如果在Windows环境下遇到权限问题,可以尝试以管理员身份打开命令提示符或PowerShell。 5. 查看 `package.json` 的 `engines` 字段,确认Node.js和npm的版本要求,并确保你的Node.js和npm版本符合要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值