如何在yarn workspace中安装子包定义的bin可执行命令供全工作区调用
答案
完全可以实现,按以下步骤操作即可:
- 先修正文件名笔误:你当前目录结构里的
hello-word.js拼写错误,需改为和scripts/package.json的bin字段匹配的hello-world.js,避免执行时报找不到文件的错误。 - 到项目根目录执行一次
yarn install:yarn 会自动把所有 workspace 子包声明的 bin 命令软链到根目录的node_modules/.bin目录下,此时你在工作区任意位置执行yarn hello-world即可直接调用脚本。
如果想要通过npx hello-world的方式调用,可任选以下一种方案:
- 方案1:在根目录
package.json的scripts字段中添加一行配置:
添加后npx就能识别到项目内的对应命令,任意位置执行"scripts": { "hello-world": "hello-world" }npx hello-world即可生效。 - 方案2:将根目录
node_modules/.bin临时加入当前shell的PATH环境变量,执行命令:
该配置仅对当前shell会话生效,生效后你可以直接输入export PATH="$PWD/node_modules/.bin:$PATH"hello-world执行,也可以用npx hello-world调用。如果需要对当前用户永久生效,可以将上述命令添加到shell配置文件(如~/.zshrc、~/.bashrc)中即可。
额外优化建议:你hello-world.js中的shebang可以简化为#!/usr/bin/env node,不需要额外加npx,yarn调用时会自动匹配项目内的Node.js版本。
内容的提问来源于stack exchange,提问作者ysfaran
相关产品推荐
相关产品推荐

