yarnpkg - Yarn workspace + lerna 在每个子包中创建 node_modules
问题描述
我有一个monorepo,我正在使用yarn workspaces + lerna 管理它。据我了解,运行应该在项目的根目录下yarn
创建一个目录,而不是在每个单独的包中。我正在关注作者所说的教程:node_modules
yarn workspaces 只创建一个 node_modules 文件夹。所有依赖项都被提升到根文件夹
这个假设总是正确的吗?或者是否存在 yarn + lerna 会node_modules
在每个包中创建单独目录的情况?
解决方案
我读了几篇文章,对同样的事情感到困惑。
简短的回答是,你是对的。Yarnnode_modules
为每个包创建一个node_modules
目录,并在你的 repo 的根目录中创建一个目录。
换句话说,Yarn/packages/<package>/node_modules
在你所有的包中创建。但是,该/packages/<package>/node_modules
目录将通过重用/node_modules
. 这基本上就是这些作者想要表达的意思!
总而言之,您将拥有n + 1
node_modules
目录,其中n
是您拥有的包的数量,假设您的所有包都有依赖项。
让我们考虑一个例子:
yarn workspace package-1 add commander
/packages/package-1/node_modules/commander
如果它已经在/node_modules/commander
兼容版本中,则不会创建。
现在让我们看另一个案例:
yarn workspace package-1 add chalk
/node_modules
如果Yarn不能重用/packages/package-1/node_modules/chalk
.
您可以在 Yarn 的官方博客中阅读更多相关信息:https ://classic.yarnpkg.com/blog/2017/08/02/introducing-workspaces/
推荐阅读
- python - Python ndarray dtype和缓冲区问题 - 它返回不同的值
- python - 如何使用python中的列表有效地对列表进行排序
- c++ - Magick::EnableOpenCL 返回 true 但没有效果
- docker - 一个 docker 容器的多个静态 IP
- python - 使用 Python3 的 SUMIF
- javascript - 未捕获的类型错误:无法读取未定义的属性“图像”(p5.js)
- javascript - 如何在javascript中从另一个对象重组对象
- pattern-matching - 使用什么数据结构来实现模式匹配?
- html - 使用 Bulma 的容器的自动边距
- node.js - 登录后如何存储 JWT 令牌并在标头中传递令牌以通过中间件对其他路由进行身份验证?