如何从npm获取包名;“安装后”;钩子?

如何从npm获取包名;“安装后”;钩子?,npm,hook,npm-install,npm-scripts,Npm,Hook,Npm Install,Npm Scripts,Npm提供了在安装每个包后执行自定义可执行文件或脚本的方法(请参阅) 下面是我写的一个小钩子脚本: 钩子测试npm/node_modules/.hooks/postinstall #!/usr/bin/env node console.log("postinstall... " + process.argv.join(" ")); 然后,我以通常的方式安装了一个软件包: $ npm install --save some-package 然而,结果并不像我所希望的那样: > som

Npm提供了在安装每个包后执行自定义可执行文件或脚本的方法(请参阅)

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

钩子测试npm/node_modules/.hooks/postinstall

#!/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
刚刚安装的包的名称(“某个包”)似乎没有作为可执行挂钩的参数提供


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

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

#!/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);