我想知道... monorepo 是否应该包含用相同语言编写的项目?我考虑将我的前端和 PHP 项目推送到 monorepo 以在它们之间共享 JSON 配置。
这样做是否值得,或者用特定语言编写的项目应该放在不同的 monorepo 中?
我想知道... monorepo 是否应该包含用相同语言编写的项目?我考虑将我的前端和 PHP 项目推送到 monorepo 以在它们之间共享 JSON 配置。
这样做是否值得,或者用特定语言编写的项目应该放在不同的 monorepo 中?
关于单一回购。我觉得它们应该仅限于可部署的单元和/或连接的库。如果一个单一仓库中的所有项目都将一起部署,那当然。如果它们都是对单个库/框架的扩展,那当然。否则,按照您认为合适的方式分解它们。
至于共享配置细节(JSON),我更喜欢一个单独的项目,只是为了配置细节(见@tracker1/config-merge
npm)。作为我的发布管道的一部分,我将作为发布捆绑的一部分将最新的输出到分发中。它让我更容易。其他选择是让它按需克隆,或者以其他方式引入。
值得注意的是,上面的模块只是我的配置项目的一部分,我还在我的输出中添加了模板,然后使用转换作为发布/部署的一部分。
至于多种语言,请使用您需要的语言。除了在 JS 社区之外,我很少看到只使用一种语言/工具的项目。通常甚至是make
脚本,即使那样通常也有bash
,cmd.exe
或者powershell
作为构建管道的一部分。
这些天来,我经常倾向于将节点脚本作为我的辅助工具,而不考虑主要语言。它太容易npm init
使用shelljs
和创建跨平台脚本,可以在我需要的任何地方工作(windows、linux、macos)。
作为参考,我使用以下命令从我的节点脚本中调用外部进程...
const exec = (command, args = []) => {
const { status } = cp.spawnSync(command, args, { stdio: 'inherit' });
if (status) {
const cmd = `${command} ${args.map(a => `"${a}"`).join(' ')}`;
console.error(`\n\nSTATUS ${status} on: ${cmd}`);
process.exit(status);
}
};