【问题标题】:How to list all the commands available in package.json?如何列出 package.json 中所有可用的命令?
【发布时间】:2020-04-24 02:25:45
【问题描述】:

一个package.json可以有很多命令,常见的有npm startnpm test,但一般命令更多。

有没有办法列出所有命令?

目前我使用less package.json,但它有太多噪音无法显示。

【问题讨论】:

  • npm run? cat package.json | jq .scripts?或者,它们可能会列在 README 或其他文档中(例如 GitHub 上的项目 Wiki)。
  • yarn run,使用任何节点脚本解析 json 文件并打印“脚本”值
  • @jonrsharpe 你不需要cat,你可以做jq .scripts package.json
  • @k0pernikus TIL,谢谢,我通常只是通过管道传输东西
  • 我已将制表符补全方法添加到我的答案中。

标签: node.js npm package.json package-managers


【解决方案1】:

我很惊讶没有人建议 jq 中的 to_entries() func ,又名:

jq -r '.scripts|to_entries[]|((.key))' package.json
# output
lint
build:css
build:dev
build:node
build:release

这基本上意味着:

  • 选择 package.json 文件的 .scripts 部分
  • 使用行输出 - -r
  • 将 this 的对象转换为 .key .value 对
  • 仅显示键

【讨论】:

    【解决方案2】:

    这是仅使用节点的极简方法!

    仅列出可用的命令。

    node -e "console.log(Object.keys(require('.' + require('path').sep + 'package.json').scripts || {}))"
    

    列出所有可用的命令及其目标。

    node -e "console.log(require('.' + require('path').sep + 'package.json').scripts || {})"
    

    更进一步,你可以把它变成一个运行命令! 在package.json 中将其添加到脚本

    例子:

    "scripts": {
       "ls": "node -e \"console.log(require('.' + require('path').sep + 'package.json').scripts || {})\""
    }
    

    现在你可以npm run ls?!

    【讨论】:

    • 有点复杂,但我猜还有另一种方式。
    【解决方案3】:

    你可以使用:

    npm run
    

    列出所有命令。 (Yarn 在yarn run 上也具有类似的功能。)

    此行为在npm help run的帮助页面中明确说明:

    This  runs an arbitrary command from a package's "scripts" object.  If no "command" is provided, it will list the available scripts.
    

    如果您安装了jq,请快速了解一下:

    jq .scripts package.json
    

    如果需要,您仍然可以将该子集通过管道传输到 less

    jq .scripts package.json | less
    

    此外,您可以通过npm-completion 使用制表符完成,然后您应该在点击制表符时看到可能的命令列表,如果只剩下一个选项,则完成命令。

    您可以通过以下方式临时设置它

    source <(npm completion)
    

    根据您的终端,您可以通过添加到您的相关配置文件中使其持久化:

    npm completion >> ~/.bashrc
    npm completion >> ~/.zshrc
    

    【讨论】:

    • 很高兴您考虑到 zsh 人,这些“节点日”应该很多。
    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2010-10-31
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2018-07-17
    相关资源
    最近更新 更多