Yarn 2 中的工作区全局 bin 脚本

Workspace-global bin-scripts in Yarn 2

我有一个包含两个工作区的 yarn 2 工作区项目:

|-foo
\-bar

现在,在根 package.json 中,我引入了常见的开发依赖项:

"devDependencies": {
    "@rollup/plugin-commonjs": "^14.0.0",
    "@rollup/plugin-node-resolve": "^8.4.0",
    "@rollup/plugin-replace": "^2.3.3",
    "@rollup/plugin-typescript": "^5.0.2",
    "@types/jest": "^26.0.13",
    "nollup": "^0.13.10",
    "rimraf": "^3.0.2",
    "rollup": "^2.23.1",
    "ts-jest": "^26.3.0",
    "tslib": "^2.0.1",
    "typescript": "^4.0.2"
  }

我现在如何轻松地(没有太多样板)从 foo 和 bar 的 package.json 中的脚本引用汇总等?

示例:foo/package.json

"build": "rollup ...",

写“../node_modules/.bin/rollup”很糟糕。

注意,我不想全局安装汇总等。

所以,我找到了 not-too-bad 解决方案。在工作区根目录中,我为要在脚本中使用的命令添加了一些可执行文件,例如:

tsc:

#!/bin/bash
$(dirname "${BASH_SOURCE[0]}")/node_modules/.bin/tsc -b -f "$@"

rollup:

#!/bin/bash
$(dirname "${BASH_SOURCE[0]}")/node_modules/.bin/rollup "$@"

这些基本上是将调用“转发”到实际的二进制文件,并且可能会添加一些通用参数。

在我的 foo/bar package.json 中,我现在可以引用那些脚本:

    "dev:compile": "../tsc",
    "build": "../tsc && ../rollup -c rollup.config.js",

要运行安装在根工作区的可执行文件,你可以说:

"build": "run -T rollup",

-T 适用于 --top-level,目前未在任何地方记录。一位维护者告诉我它存在于 Yarn discord 服务器上。

https://github.com/yarnpkg/berry/blob/bef203949d9acbd42da9b47b2a2dfe3615764eaf/packages/plugin-essentials/sources/commands/run.ts#L47-L49