2016-04-11 80 views
2

我想从命令行中获取package.json的详细信息。一个例子:是否有npm cli选项从本地package.json获取包名?

$ cd ~/my-node-package 
$ npm commandiamlookingfor package name 
my-package-name 

我知道这将是一个琐碎的脚本来写。我可以这样做:

node -e "try {var pack=require('./package.json'); console.log(pack.name); } catch(e) {}" 

但是,我不必编写(和维护)的任何代码都是最好的代码。另外,因为我想用它来进行shell集成,它会运行很多;本地实现可能会更快。

回答

5

NPM具有它存储的环境变量。您可以在控制台中输入npm run env来查看这些信息。

您可以通过grep找到需要的变量来获取您需要的变量npm_package_name,但会给您留下“npm_package_name = your_package_name”。

一种方式来解决这将是“=”字符与命令后得到的字符串:

cut -d "=" -f 2 <<< $(npm run env | grep "npm_package_name")

该命令给你留下的包名。

编辑:
另一种方式做,这是通过增加你的package.json一个脚本,仅仅是echo $npm_package_name然后运行在你的shell命令脚本。

package.json会是这个样子:

{ 
    "name": "your_package_name", 
    "scripts": { 
     "getName": "echo $npm_package_name" 
    } 
} 

然后键入npm run getName -s

相关问题