pnpm run
别名: run-script
运行在软件包清单文件中定义的脚本。
示例
假如你有个 watch 脚本配置在了 package.json
中,像这样:
"scripts": {
"watch": "webpack --watch"
}
你现在可以使用 pnpm run watch
运行该脚本! 很简单吧?
对于那些不喜欢敲键盘而浪费时间的人要注意的另一件事是,所有脚本都会有 pnpm 命令的别名,所以最终 pnpm run watch
的简写是 pnpm watch
(仅适用于那些不与已有的 pnpm 命令相同名字的脚本)。
运行多个脚本
你可以使用正则表达式来替代脚本名称从而同时运行多个脚本。
pnpm run "/<regex>/"
运行所有以 watch:
开头的脚本。
pnpm run "/^watch:.*/"
详情
除了 shell 先前存在的 PATH
, pnpm run
也包括在 PATH
中的 node_modules/.bin
提供的 scripts。 这意味着,只要你安装了一个包,你就可以像常规命令一样在脚本中使用它。 例如,如果你已经安装了 eslint
,你可以这样写一个脚本:
"lint": "eslint src --fix"
即使 eslint
没有在你的 shell 中全局安装,它也会运行。
对于工作空间, <workspace root>/node_modules/.bin
也会被添加到到 PATH
中,因此如果在工作空间根目录中安装了工具,则可以在工作空间中任何软件包的 scripts
中调用它。
运行环境
pnpm 会自动为执行的脚本创建一些环境变量。 这些环境变量可用于获取有关正在运行的进程的上下文信息。
以下是 pnpm 会创建的环境变量:
- npm_command - 包含已执行命令的名称。 如果执行的命令是
pnpm run
,那么这个变量的值就是“run-script”。
配置项
run
命令的选项都应被列在脚本名称之前。
脚本名称后列出的选项将传递给执行的脚本。
例如下面这些都将使用 --silent
选项运行 pnpm CLI:
pnpm run --silent watch
pnpm --silent run watch
pnpm --silent watch
脚本名称后的任何参数都将添加到执行的脚本中。 因此,如果“watch”运行“webpack --watch”,那么此命令:
pnpm run watch --no-color
将运行:
webpack --watch --no-color
--recursive, -r
这个命令将运行每个软件包中的“script”中的脚本。 如果一个包没有相应的命令,将被跳过。 如果没有任何的包有此命令,该命令将会执行失败。
--if-present
可以使用 --if-present
标志来避免在脚本未定义时以非零退出码退出。 这使你可以在不中断执行链的情况下运行可能未定义的脚本。