use*_*783 5 javascript npm webpack lerna monorepo
我正在尝试找出 javascript monorepo 的正确方法。想象一下包含包/库的 monorepo:
root
- node_modules
- packages
+ lib-a
* node_modules
+ lib-b
* node_modules
Run Code Online (Sandbox Code Playgroud)
现在让我们说lib-a和lib-b包都webpack用作它们的构建工具。
我看到两种方法
添加wepback为 root 的依赖项。在两个包中都包含“构建”脚本:"build": "webpack -p --config webpack.config.js. webpack.config.js可以包括 root webpack.config.js。然后我可以使用类似工具lerna从根目录运行构建(这意味着webpack可以识别二进制文件。但是我将无法在特定包中运行构建,因为webpack在那里不可用。我可能可以将构建脚本更改为类似"build": "../../node_modules/.bin/webpack -p --config webpack.config.js
始终包含webpack在每个包中。这意味着build脚本将成功。这也意味着每个包将具有相同的依赖项,我可能应该注意每个包使用相同的webpack版本。
基本上我得到的是 monorepo 中的包应该如何构建?如果发布了任何包,是否总是可以build单独发布该包。
你的方法#2是正确的。您可以单独处理每个包,因为它是一个独立的、独立的包。
monorepo 的优点不在于通过目录结构共享文件,而在于:
node_modules,从而有效地删除它们的重复项。import通过常规包/使您的包可供其他包使用require(),因为它们是外部依赖项。而且,由于 的符号链接node_modules,您的“依赖项”包始终包含最新内容而无需发布。我知道一开始并不那么容易,但是当您深入研究 Lerna 文档时,它会变得更加清晰。除了 Lerna主页之外,我还建议您阅读有关提升、常见问题解答以及引导程序和发布等单独命令的内容。
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |