【发布时间】:2016-01-13 02:54:06
【问题描述】:
在 Node package.json 文件中,您可以将多个可执行文件映射到全局 NPM 安装 (npm install -g) 上的 PATH 环境变量:
"bin": {
"foo": "./bin/foo.js",
"bar": "./bin/bar.js"
},
我有一个独特的项目,需要在没有它的操作系统上映射现有的PATH 变量。例如,我想将一个名为grep 的命令添加到PATH,当且仅当它安装在 Windows 计算机上。如果计算机运行的是任何其他操作系统,NPM 安装显然会失败。
有什么方法可以运行预先确定安装中可用的bin 选项的逻辑吗?
哦,快——我刚刚有个主意!
这行得通吗:
- 父模块有
npm(编程版本)作为依赖项。 - 在全局安装时,运行在父模块的
package.json中声明的安装后脚本。 - 安装后脚本会检查系统以查看存在哪些命令。这将比“Windows or not Windows”更成熟——它会尝试执行一系列命令并查看哪些命令失败。
- 对于每个不存在的命令,安装后脚本以编程方式在所有子模块上运行
npm install -g(每个命令一个,例如grep)。
这需要一段时间,npm 模块很大,但它似乎可以工作。没有?
【问题讨论】: