2017-04-26 62 views
0

Npm提供了一种在安装每个软件包后执行自定义可执行文件或脚本的方法(请参阅Hook Scripts)。如何从npm“postinstall”挂钩获取包名?

这里是一个小钩子脚本,我写道:

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

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

我再以通常的方式安装包:

$ npm install --save some-package 

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

> [email protected] 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”)似乎没有作为我的可执行程序钩子的参数提供。

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

回答

0

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

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