• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
GoForIt0818
博客园    首页    新随笔    联系   管理    订阅  订阅

npm run与npm cli

npm 允许在package.json文件里面,使用 scripts 字段定义脚本命令。

{
  "name": "my-cli",
  // ...
  "bin": {
    "command-name": "./file.js"
  },
  // ...
  "scripts": {
    "build": "node build.js"
  }
}

命令行下使用npm run,就可以执行这段脚本。

$ npm run build
# 等同于执行
$ node build.js

对于具有可执行命令的 npm 包,在 bin 字段下会定义一个 command-name,安装 npm 包时,npm 会在/usr/local/bin(全局安装)或node_modules/.bin(本地安装)下创建一个以 command-name 命名的软链接,指向 npm 包中的 file.js。

/usr/local/bin是在 PATH 中的
file.js 的第一行内容必须是#!/usr/bin/env node

执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。

比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。

这意味着,当前目录的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。比如,当前项目的依赖里面有 Mocha,只要直接写mocha就可以了。

"test": "mocha"

而不用写成下面这样。

"test": "./node_modules/.bin/mocha"

由于 npm 脚本的唯一要求就是可以在 Shell 执行,因此它不一定是 Node 脚本,任何可执行文件都可以写在里面。

npm 脚本的退出码,也遵守 Shell 脚本规则。如果退出码不是0,npm 就认为这个脚本执行失败。

参考

  1. http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
  2. https://www.jianshu.com/p/e213034ff85c
posted @ 2021-04-29 15:30  GoForIt0818  阅读(211)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3