是否有一个npm cli选项从本地package.json获取包名?

lef*_*eff 5 npm package.json

我想package.json从命令行获取详细信息.一个例子:

$ cd ~/my-node-package
$ npm commandiamlookingfor package name
my-package-name
Run Code Online (Sandbox Code Playgroud)

我知道这将是一个琐碎的剧本.我可以这样做:

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

但是我不必编写(和维护)的任何代码都是最好的代码.此外,由于我想将它用于shell集成,它将运行很多; 本机实现可能会更快.

Sco*_*ton 9

NPM具有存储的环境变量.您可以通过npm run env在控制台中键入来查看这些内容.

您可以使用此方法通过npm_package_namegrepping 获取所需的变量,但这会留下"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"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后输入 npm run getName -s


Mai*_*ppe 7

如果你决定使用你最初的使用node命令的想法,你可以通过使用-p参数 使它更清洁--print

或者有错误处理 node