Node.js 带有两个命令的单个npm包

Node.js 带有两个命令的单个npm包,node.js,package.json,Node.js,Package.json,我有一个由以下JSON描述的node.js包: "name": "mycommand", "main": "index.js", "bin": { "mycommand": "./index.js", index.js文件包含以下代码: #!/usr/bin/env node const app = require('./src/app

我有一个由以下JSON描述的node.js包:

  "name": "mycommand",
  "main": "index.js",
  "bin": {
    "mycommand": "./index.js",
index.js
文件包含以下代码:

#!/usr/bin/env node
const app = require('./src/app.js')
const { Logger } = require('./utils/Logger')
app.init()
app.js
包含一个基于yargs的命令行工具的代码

现在,我想在这个包中添加第二个命令,但我不知道该如何继续,因为只有一个“main”


有人在某处有例子吗?

也许你在寻找
脚本而不是
bin

现在,我想在这个包中添加第二个命令,但我不知道该如何继续,因为只有一个“main”

bin
映射与主文件无关

您的命令被符号链接,您只需添加更多:

"bin": {
    "mycommand": "./index.js",
    "my-other-command": "./other-command.js",
或者,您可以使用
mycommand
并使用
process.argv
解析脚本app.js中的参数:


不,我认为“脚本”与我的情况无关,因为我在运行node.js应用程序时没有尝试执行某些命令。我试图构建的是一组命令行工具(将与npx一起运行),它们被分组在一个node.js包中。所以我真的认为“bin”是合适的字段。但是,如果我的包中有多个命令行工具,我不知道“main”属性的作用。@LiohAu
main
bin
没有任何关系-您可以像我的示例中那样添加更多的文件。那么,这是否意味着我可以省略“main”属性,因为它在我的情况下是无用的?或者我必须保持“main”指向“index.js”并在该文件中添加我正在构建的所有命令行工具的所有.js的“require”命令吗?@LiohAu我想是的,就像那样。如果npm显示警告,您可以添加一个空的JS脚本作为主脚本