Shell 作为命令行程序的 npm 包的脚本包装器

Shell script wrappers for npm packages that are command line programs

假设您有一个 npm 包,您希望将其用作命令行程序,例如js美化.

当我全局安装这个时,我看到它确实有一个 Windows 批处理文件,实际上是在不同目录中的两个略有不同的同名批处理文件(和一个 shell 在 UNIX 上安装时的脚本)。

但是当我查看 github 上的 js-beautify 源代码时,没有任何批处理文件的迹象。批处理文件来自哪里?我在 npm 文档中没有看到任何此类提及。

我会想象——在我的例子中——C:\Program Files\nodejs\npm(可执行文件)最终负责创建操作系统——像这样的特定差异。基于 Windows 的计算机不能只有 运行 没有扩展名的文件,但是通过将 npm.cmd 添加到同一文件夹中,这足以让 Windows 表现得像一个 UNIX box 让它工作。

理论上,然后,在 UNIX 世界中创建您的程序而无需扩展名,然后将其安装在 Windows 世界中,让 npm 完成它的工作。它应该通过添加 .cmd 或 .bat 文件来弥合差距。

当您将 package.json 中的 "bin" 属性 配置为 js-beautify does here. Specifically, npm install uses the cmd-shim module to create them as shown here 时会发生这种情况。