【发布时间】:2019-06-20 08:14:18
【问题描述】:
在根目录运行yarn upgrade时,只升级根目录的package.json和yarn.lock,但我需要升级workspace dependencied。
除了使用yarn upgrade-interactive之外,还有其他方法吗?
【问题讨论】:
标签: node.js yarnpkg lerna yarn-workspaces
在根目录运行yarn upgrade时,只升级根目录的package.json和yarn.lock,但我需要升级workspace dependencied。
除了使用yarn upgrade-interactive之外,还有其他方法吗?
【问题讨论】:
标签: node.js yarnpkg lerna yarn-workspaces
我找到了替代方法
yarn workspace (workspace name) add (package name) (type of dependancy)
所有你需要升级的包。
然后
yarn install
【讨论】:
这在 yarn 版本 2 中处理得更好。 在那里你可以做
yarn up react react-dom
它会知道工作区,或者为交互模式添加-i,它会询问你在每个工作区中的每个依赖项升级要做什么。
【讨论】:
yarn up。
您可以将两个命令链接在一起:
yarn upgrade -W && yarn workspace <workspace> upgrade
或升级特定包:
yarn upgrade <package> -W && yarn workspace <workspace> upgrade <package>
在一个命令中作用于根目录和每个工作区。
对于许多工作区,或者如果您不想写两次包名,您可以使用函数自动执行此操作。
要求:您需要安装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 测试
【讨论】: