0

我想知道... monorepo 是否应该包含用相同语言编写的项目?我考虑将我的前端和 PHP 项目推送到 monorepo 以在它们之间共享 JSON 配置。

这样做是否值得,或者用特定语言编写的项目应该放在不同的 monorepo 中?

4

1 回答 1

2

关于使用单一回购

关于单一回购。我觉得它们应该仅限于可部署的单元和/或连接的库。如果一个单一仓库中的所有项目都将一起部署,那当然。如果它们都是对单个库/框架的扩展,那当然。否则,按照您认为合适的方式分解它们。

共享配置

至于共享配置细节(JSON),我更喜欢一个单独的项目,只是为了配置细节(见@tracker1/config-mergenpm)。作为我的发布管道的一部分,我将作为发布捆绑的一部分将最新的输出到分发中。它让我更容易。其他选择是让它按需克隆,或者以其他方式引入。

值得注意的是,上面的模块只是我的配置项目的一部分,我还在我的输出中添加了模板,然后使用转换作为发布/部署的一部分。

多种语言

至于多种语言,请使用您需要的语言。除了在 JS 社区之外,我很少看到只使用一种语言/工具的项目。通常甚至是make脚本,即使那样通常也有bashcmd.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);
  }
};
于 2018-07-20T17:13:57.470 回答