用 npm pkg get 快速看 package.json 字段

19 次浏览3 条回复

有时候只想确认 package.json 里的某个字段,不太想打开文件再翻,可以直接用 npm 自带的 pkg get。

环境:Node.js 16+,npm 8+,在项目根目录执行:

npm pkg get scripts

它会把 scripts 这一段按 JSON 打出来。看单个脚本也可以:

npm pkg get scripts.test

如果是 workspace 项目,想顺手看所有包的名字:

npm pkg get name --workspaces

这个命令只读,不会改 package.json。比较适合写脚本前先探一下项目配置,或者排查 CI 里到底读到了哪个字段。

这个还挺适合塞到脚本里。小补充一下:如果取的是字符串字段,输出一般会带 JSON 引号,比如:

npm pkg get version

想在 shell 里拿纯文本,可以再接一层:

npm pkg get version | jq -r .

环境就是 Node.js 16+、npm 8+,另外机器上要有 jq。不想加依赖的话,直接保留 JSON 输出也更稳一点。

再补一个小用法:临时只看某个 workspace 的字段时,可以指定 workspace,不用把所有包都打出来。

npm pkg get version --workspace packages/foo

环境还是 npm 8+。monorepo 里排 CI 变量问题时挺省事,尤其是包很多的时候。路径按项目里的 workspace 名称或目录来写就行。

这个我还会拿来看项目要求的 Node 版本,尤其是换机器或者 CI 镜像时:

npm pkg get engines.node

环境同样是 npm 8+。如果项目没写 engines,会直接返回空对象那类 JSON 输出,也能顺手提醒一下是不是该补一行约束。