热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Yarn工作区,如何将编译后的二进制文件链接到工作区后编译?

如何解决《使用Yarn工作区,如何将编译后的二进制文件链接到工作区后编译?》经验,有好办法吗?

上下文

纱线工作区提供方便的单一回购功能,其中包自动链接.即,他们可以相互要求/导入,并且他们的二进制文件可以从工作区根目录链接和访问.

一个例子:

工作区/的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.jsindex.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因为这应该是纱线工作区的冗余).


推荐阅读
author-avatar
权利阳成_278
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有