如何从npm“postinstall”钩子获取包名?

时间:2017-04-26 09:02:38

标签: npm hook npm-install npm-scripts

Npm提供了一种在安装每个软件包后执行自定义可执行文件或脚本的方法(参见Hook Scripts)。

这是我写的一个小钩子脚本:

钩测试-NPM / node_modules / .hooks /安装后

#!/usr/bin/env node
console.log("postinstall...  " + process.argv.join("  "));

然后我以通常的方式安装了一个包:

$ npm install --save some-package

然而,结果并不像我希望的那样:

> some-package@1.0.0 postinstall /Users/macuser/Desktop/hook-test-npm/node_modules/some-package
> /Users/macuser/Desktop/hook-test-npm/node_modules/.hooks/postinstall
postinstall...  /usr/local/bin/node  /Users/macuser/Desktop/hook-test-npm/node_modules/.hooks/postinstall

刚刚安装的软件包的名称(“some-package”)似乎不是作为我的可执行钩子的参数提供的。

有没有办法从钩子中访问这些信息?

1 个答案:

答案 0 :(得分:2)

经过进一步的实验,我遇到了以下两个环境变量,这些变量似乎包含了我正在寻找的信息。我不知道这些是否应该直接使用;但他们肯定会暂时解决这个问题:

#!/usr/bin/env node

console.log("postinstall...");

// Print out the name of the package that was just installed.
console.log("    " + process.env.npm_package_name);

// Print out the directory of the package that was just installed.
console.log("    " + process.env.PWD);