如何使 bin 脚本可用于本地安装的 npm 包

How to make bin script available for npm package installed locally

我在 npm 文档上看到您不能使用本地安装包的 bin 脚本。

那么,gulp 如何在本地安装时作为 bin 命令启动? 是什么让它在本地安装时可用,我查看了 gulp package.json 和 bin 脚本,我没有找到任何答案。

From NPMJS documentation:

To use this, supply a bin field in your package.json which is a map of command name to local file name. On install, npm will symlink that file into prefix/bin for global installs, or ./node_modules/.bin/ for local installs.

因此,您本地安装的软件包二进制文件将像这样可执行

./bin/node_modules/.bin/the_binary

这是如果你想直接启动二进制文件。或者,如 the scripts part of the documentation:

中指定

In addition to the shell's pre-existing PATH, npm run adds node_modules/.bin to the PATH provided to scripts.

因此,您可以简单地编写一个包装脚本,例如

scripts: {
  "build": "the_binary"
}

并像这样调用你的脚本

npm run build

奖金

As of npm@2.0.0, you can use custom arguments when executing scripts. The special option -- is used by getopt to delimit the end of the options. npm will pass all the arguments after the -- directly to your script:

npm run test -- --grep="pattern"

您可以使用 lpx https://www.npmjs.com/package/lpx

  • 运行 在本地 node_modules/.bin 文件夹中找到的二进制文件
  • 运行 在工作区根目录的 node_modules/.bin 中从工作区的任何位置找到的二进制文件

如果在本地找不到二进制文件(即不像 npx),lpx 不会下载任何包

示例:lpx tsc -b -w 将 运行 tsc -b -w 与本地打字稿包 ​​