升级根目录中的yarn不会升级Workspace依赖项

时间:2019-06-20 08:14:18

标签: node.js yarnpkg lerna yarn-workspaces

在根目录中运行yarn upgrade时,它仅升级根目录的package.jsonyarn.lock,但是我需要升级workspace dependencied

除了使用yarn upgrade-interactive之外,还有其他方法吗?

3 个答案:

答案 0 :(得分:2)

在纱线版本2中处理得更好。 在那里你可以做

yarn up react react-dom

它将知道工作空间,或者为交互模式添加-i,在交互模式下它将询问您对每个工作空间中的每个依赖项升级要做什么。

答案 1 :(得分:1)

我找到了另一种选择

yarn workspace (workspace name) add (package name) (type of dependancy)

获取所有需要升级的软件包。

然后

yarn install

答案 2 :(得分:0)

选项a)链接两个命令

您可以将两个命令链接在一起:

yarn upgrade -W && yarn workspace <workspace> upgrade

或升级特定软件包:

yarn upgrade <package> -W && yarn workspace <workspace> upgrade <package>

选项b)创建一个函数

通过一个命令作用于根目录和每个工作区。

对于许多工作空间,或者如果您不想重复输入软件包名称,则可以使用一个函数将其自动化。

要求:您将需要安装jq

在每个shell会话中输入此行一次:

yarn_all() { yarn -W $@ && for w in $(yarn workspaces info -s | sed '1d;$d' | jq -r 'keys[]'); do yarn workspace $w $@; done; }

用法:yarn_all <command> [<package>]

示例:

yarn_all upgrade
yarn_all upgrade my-package
yarn_all upgrade my-package --registry http://localhost:4873

它也可以与其他命令一起使用,例如remove

经过yarn v1.22.4和jq v1.6的测试