作者:权利阳成_278 | 来源:互联网 | 2022-12-10 10:40
上下文
纱线工作区提供方便的单一回购功能,其中包自动链接.即,他们可以相互要求/导入,并且他们的二进制文件可以从工作区根目录链接和访问.
一个例子:
工作区/的package.json
{
"name": "200180719-yarn-bin",
"version": "1.0.0",
"workspaces": [
"packages/*"
],
"private": true
}
工作区/包/ A /的package.json
{
"name": "a",
"version": "1.0.0",
"main": "src/index.js",
"bin": {
"mycli": "src/index.js"
}
}
工作区/包/ A/src目录/ index.js
#!/usr/bin/env node
console.log('welcome to the cli')
如果然后将目录更改为主工作区并运行yarn install
,则yarn正确链接二进制文件,您可以运行:
yarn run mycli
从工作区目录就好了.大!
问题
我yarn install
遇到的问题是,如果你的代码首先必须编译,那么二进制文件在完成之前将不可用(因为你不应该在版本控制中提供已编译的代码).我使用Typescript来编译我的cli:
重命名index.js
到index.ts
并更新a/package.json
到:
{
"name": "a",
"version": "1.0.0",
"main": "src/index.js",
"bin": {
"mycli": "dist/index.js"
},
"scripts": {
"build": "tsc src/index.ts --outDir dist",
"preinstall": "yarn run build"
},
"devDependencies": {
"typescript": "^2.9.2"
}
}
即使在工作区目录上dist/index.js
运行时正确构建yarn install
,也无法创建指向二进制文件的链接:
Toms-MacBook-Pro-2:200180719-yarn-bin tommedema$ yarn run mycli
yarn run v1.7.0
error Command "mycli" not found.
题
当我的二进制文件需要在安装时编译时,如何使yarn工作区二进制链接工作?
如果我需要使用Lerna来完成这项工作,那也将完全没问题(尽管最好避免调用,lerna bootstrap
因为这应该是纱线工作区的冗余).