我正在开发 CLI 工具。我正在使用 macOS。我在本地运行时使用的是
node index.js <command>
。我决定将其发布为 npm 包,但我在 bin
的 package.json
部分中定义的命令将不起作用。
在我的
package.json
中,我定义了bin
如下:
"bin": {
"scaffold": "index.js"
},
我真的不知道如何导航,而且很陌生。将不胜感激任何帮助。
我已经全局安装了该软件包。
尝试通过运行帖子中的一些命令来排除故障,以下是结果(如果有帮助的话):
运行
npm bin -g
结果:
Unknown command: "bin"
To see a list of supported npm commands, run:
npm help
运行
npm root -g
结果:
/opt/homebrew/lib/node_modules
运行
which scaffold
结果:
/opt/homebrew/bin/scaffold
运行
npm list -g project-scaffold
结果:
/opt/homebrew/lib
└── [email protected]
这是包含存储库链接和所有内容的包:https://www.npmjs.com/package/project-scaffold
谢谢你。
想通了。有一个愚蠢的 if 语句手动检查文件路径的 argv 数组的第一个索引。如果从
node index.js <command>
切换到 scaffold <command>
,这将不起作用,因为第一个索引不再指向 if 语句正在查找的内容,从而永远不允许 runCLI() 运行。我真丢脸。
罪魁祸首:
if (process.argv[1] === fileURLToPath(import.meta.url)) {
runCLI();
}