是否有npm cli选项从local package.json获取包名?
我想从命令行上的是否有npm cli选项从local package.json获取包名?,npm,package.json,Npm,Package.json,我想从命令行上的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) {}" { "name": "your_packa
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) {}"
{
"name": "your_package_name",
"scripts": {
"getName": "echo $npm_package_name"
}
}
但是任何我不必编写(和维护)的代码都是最好的代码。另外,由于我想将其用于shell集成,它将运行很多次;本机实现可能会更快。NPM具有存储的环境变量。您可以通过在控制台中键入
npm run env
来查看这些
您可以使用此函数通过对npm\u package\u name
进行灰显来获取所需的变量,但这会留下“npm\u package\u name=your\u package\u name”
解决此问题的一种方法是使用命令获取“=”字符后面的子字符串:
cut-d“=”-f2如果您决定使用node
命令的最初想法,您可以使用-p
参数使其更简洁,这是以下命令的缩写:
或者使用错误处理
node -p "try { require('./package.json').name } catch(e) {}"
我也需要这样做,但我尽量不让node参与其中,因为我永远不知道我将用于运行脚本的docker容器是否实际安装了node(这也是我不使用jq的原因)。我通常使用这个shell脚本
npm运行环境| grep“npm|u包名称”| awk-F“=”{print$2}”
基本上它的作用是
获取npm包的env
用“npm\U包\U名称”grep该行
在“=”上拆分并返回第二个条目
node -p "try { require('./package.json').name } catch(e) {}"