配置package.json bin后全局安装仍提示zsh: command not found求助
解决全局CLI命令找不到的问题
1. 先确认命令拼写
终端提示的是jieha-cli,但你安装的包是jihea-cli——先检查自己执行命令时的拼写,把jieha-cli改成jihea-cli重试。
2. 验证package.json的bin配置
确保package.json里的bin字段配置准确,示例如下:
{ "bin": { "jihea-cli": "./dist/cli.js" } }
- 路径必须指向编译后的JavaScript文件(TypeScript无法直接被Node执行),如果你的TS入口是
src/cli.ts,编译后输出到dist/cli.js,这个路径不能错。 - 编译后的JS文件顶部必须添加shebang行:
#!/usr/bin/env node,否则系统不知道用Node.js来执行该脚本。
3. 检查npm全局bin目录是否在系统PATH中
执行命令查看npm全局前缀路径:
npm get prefix
将输出路径加上/bin(比如/usr/local/bin或~/.npm-global/bin),检查该目录是否在系统PATH里:
echo $PATH
如果不在,把它添加到zsh配置文件~/.zshrc中:
export PATH="$PATH:$(npm get prefix)/bin"
执行source ~/.zshrc让配置立即生效。
4. 重新安装并验证链接
先卸载全局包再重新安装,确保链接关系正确:
npm uninstall -g jihea-cli npm install -g jihea-cli
安装完成后执行which jihea-cli,如果能输出对应的文件路径,说明链接成功,再执行jihea-cli命令即可。
5. 检查编译文件的可执行权限
确保编译后的JS文件有可执行权限:
chmod +x dist/cli.js
发布包时这个权限会被保留,所以本地开发阶段设置好再打包发布。
内容的提问来源于stack exchange,提问作者pjh
相关产品推荐
相关产品推荐

