【发布时间】:2021-12-16 03:04:10
【问题描述】:
我正在使用package.json 的bin 属性来定义要通过某个包启动的命令。
我有一个包,my-package,它的package.json 有这样的东西
{
"name": "my-package",
....
"main": "index.js",
"bin": {
"command_1": "./dist/lib/command_1.js"
},
...
}
我发布了包,当我运行 npx my-package 时,我看到 command_1.js 按预期执行。
现在我添加第二个这样的命令
{
"name": "my-package",
....
"main": "index.js",
"bin": {
"command_1": "./dist/lib/command_1.js",
"command_2": "./dist/lib/command_2.js",
},
...
}
现在,如果我运行npx my-package,则执行的默认命令仍然是command_1.js,而如果我运行npx -p my-package command_2,我将执行command_2.js。
现在我想要第三个命令command_0.js 成为要执行的默认命令。所以我尝试将command_0 定位为bin 属性中的第一个条目,如下所示
{
"name": "my-package",
....
"main": "index.js",
"bin": {
"command_0": "./dist/lib/command_0.js",
"command_1": "./dist/lib/command_1.js",
"command_2": "./dist/lib/command_2.js",
},
...
}
但我看到的是默认命令仍然是command_1。所以我的问题是如何设置新的默认命令?
【问题讨论】:
-
这只是一个猜测。
bin是一个对象,使用for...in循环遍历一个对象并不能保证任何特定的顺序,也许这就是 npm 所做的。
标签: npm package.json npx