Ins*_*nno 9 npm lerna yarnpkg yarn-workspaces
我有一个包含许多不同前端 React 项目的存储库,它们都有自己的 package.json 文件。
我有四个要求:
这些包不需要同时运行。并非每个项目都包含完全相同的依赖项,但所有项目都至少包含一些常见的依赖项(即 React、Webpack、Babel 等)。这些包也是完全私有的,不应在 npm 上发布,而只能在 GitHub 上发布。
我已经对工具进行了一些研究,但我很困惑是否仅使用 Yarn Workspaces 就能解决问题,或者是否有必要使用 Lerna。这是我迄今为止在 Yarn Workspaces 中所做的事情:
文件夹结构:
Repo-root
Packages
Project-1
Project-2
Run Code Online (Sandbox Code Playgroud)
回购根 package.json:
{
"private": true,
"name": "example-monorepo",
"workspaces": ["packages/*"],
"scripts": {}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,Yarn Workspaces 尝试将所有常见依赖项移至幕后的根 node_modules,但我对如何完成共享依赖项安装和更新到最新版本要求感到困惑。Yarn Workspaces 能否自行满足要求,或者 Lerna 是否需要此功能?在勒纳如何实现这一目标?我是否需要定义一个全局的 package.json“单一事实来源”,或者这些工具是否在幕后自行执行某些版本?Lerna 或 Yarn Workspaces 如何“知道”如何在没有全局版本范围集的情况下将所有单独的 package.json 文件更新到最新版本?(我希望所有项目都相同)