javascript - 在 A 依赖于 B、B 依赖于 C 的情况下,并行处理 A、B 和 C 的完美工作流程是什么?

标签 javascript git workflow npm

我想知道如果一个人需要并行处理项目 A、B 和 C,其中 A 依赖于 B,B 依赖于 C,那么完美的工作流程是什么。

目前,我将所有内容都放在一个存储库中,这加快了早期开发速度。所以我的工作目录如下所示:

/A/
/A/B
/A/B/C

因此,A 是 push 开发的项目,但这也意味着 BC 是并行发展的。

但是,我想单独发布项目 BC,因为它们对其他人非常有用。

但是,我不知道如何在不影响我的开发速度的情况下做到这一点。 npm 非常适合分发和依赖项管理,但在开发过程中,您绝对不希望只是为了在计算机上的不同文件夹中更新文件而临时在互联网上移动版本:)

另一方面,您也不想手动复制它们。哎呀,这一切我必须切换目录才能在 B 上工作,现在将其复制到 /A/B 太可怕了,而且似乎很容易出错.

因此,git submodule 似乎是答案,因为它本质上正是实现了这一点:您将保持目录布局不变。然后,当您对 B 中的文件进行更改时,您可以直接在 A 中测试它们,而无需复制某些内容。当您认为准备就绪时,您可以从三个不同的文件夹中提交和推送。所有内容都会自动进入三个不同的存储库。看起来就像天堂,但每个人都因为各种原因讨厌 git submodule

我在处理 grunt 插件时遇到了几乎同样的问题。我在它自己的存储库中有 grunt 插件,然后当我处理它时,我必须将它复制到我使用它来驱动开发的项目之一中。然后在一天结束时,我将其复制回 grunt 插件工作目录,进行提交并推送它们。感谢上帝,我不是数千个 grunt 插件的作者,所以我可以处理这个问题,但对于我目前正在从事的这个项目,我肯定想找到一个更好的解决方案。

所以我想知道,答案是什么?

最佳答案

请注意,Git 子模块指向外部存储库的特定版本,即特定提交。

要将所有 Git 子模块更新到最新版本,您仍然需要run a command :

git submodule foreach git pull origin master

根据您的情况,您可以使用 npm 而不是 Git 子模块。在这种情况下,您只需在 package.json 中列出依赖项,然后在存储库的根目录中运行 npm install 即可获取它们。如果更新依赖项并发布新版本,您只需再次运行 npm update ,它将匹配 package.json 文件中设置的版本要求。您还可以use npm to point to a specific commit ,很像 Git 子模块的工作方式:

{
  "devDependencies": {
    "dependency-a": "git://github.com/the-user-name/the-project-name.git#b3c24169432a924d05020c85f852d4a1736e66d4"
  }
}

或者,如果您想使用依赖项的前沿版本,例如给定 Git 存储库的 master 分支,您可以使用:

{
  "devDependencies": {
    "dependency-a": "git://github.com/the-user-name/the-project-name.git#master"
  }
}

关于javascript - 在 A 依赖于 B、B 依赖于 C 的情况下,并行处理 A、B 和 C 的完美工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109069/

相关文章:

git - 无法提交 CodeCommit

python-3.x - 如何在 Nextflow 中运行 Python 脚本

javascript - Angular $filter 仅选择属性

javascript - 在 jQuery AJAX 中使用异步选项

javascript - 更改 knockout 中切换按钮的名称

macos - ubuntu 12.04 virtual box vm 中用于我 mac 上共享文件夹的 git 行结束选项

git 计数对象警告 : no corresponding . 包:

workflow - 如何将控制权交给调用方法

database - PostgreSQL 开发流程

c# - 文件下载到浏览器后如何修改页面?