git - 您是否应该将已编译的 Assets checkin Git?

所以我一直在与一些同事讨论这个问题,我希望其他人能够参与进来。我很想知道其他开发人员在做什么。

我喜欢做的是从 repo 中忽略我的整个 build/assets 文件夹。此文件夹包含我编译的 CSS、Javascript 和压缩图像。我认为应该只 checkin 源文件。我发现每次更改样式表或 JS 文件时,我都必须 checkin 源文件和新的编译版本,这很烦人。当您有多个人在项目上工作时,这也会引入 merge 冲突和其他问题。我喜欢保持 repo 简洁明了,然后让开发人员在本地构建项目以进行设置。或者在部署时,让服务器构建项目。

这有点问题,因为我的同事使用 Git 作为部署过程。因此,当您要部署时,将代码检入 git,将其推送到远程仓库,然后通过 SSH 连接到服务器并执行 git fetch && git pull。这意味着所有网站文件都必须存在于存储库中。所以我现在必须检查我的 Assets 文件夹。

你们是怎么处理这个问题的?我正在将 bedrock-ansible 用于 Wordpress 站点,并且可以在部署之前运行一些命令,因此我将其配置为运行 npm install && gulp build并构建项目,但问题是它太慢了。 bedrock-ansible 的工作方式是它为每个部署创建一个新的发布目录,它只是将最新的发布目录符号链接(symbolic link)到 current 目录。所以每次我部署时,它都会运行 npm install,而实际上,我只需要一个共享目录中的那些依赖项。 npm install --prefix install/dir 可能有办法做到这一点,但我还没有测试过。我认为这可能会带来更多问题。

现在,我必须将所有已编译的 Assets checkin git,才能使其正常工作。但是在我的 gulp watch 任务中,我没有发生任何缩小,但是当我想部署时,我想首先运行 gulp build 这将缩小和丑化一切- 所以从技术上讲,当我想部署站点时,我总是必须做出 promise 。一团糟。您认为处理这个问题的好方法是什么?

最佳答案

gulp build 可以将所有编译后的文件放在 dist/ 目录中,gulp publish 可以将此目录推送到远程。您可以使用git-directory-deploy为此:

$ git-directory-deploy --directory dist --branch master

或者您可以手动为已编译的 Assets 设置一个单独的分支,并在部署您的网站时将其推送到远程服务器(this SO answer 可能会有所帮助)。

这样,您可以在开发分支上保持干净的历史记录,而无需担心 merge 冲突,同时仍将 Git 作为部署过程。

关于git - 您是否应该将已编译的 Assets checkin Git?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538040/

相关文章:

deployment - 什么/为什么 WinRT 随机创建新的干净布局

c++ - 如何使用 Visual Studio 2017 在 Windows 上构建 OpenSS

linux - 如何使用静态链接构建 git?

java - 如何在 gerrit 中安装删除项目插件?

android - 带有 Phonegap Build 和 PushPlugin 的 Android

xcode - 如何将构建阶段复制到 Xcode 中的另一个目标?

android - 在 Android Studio 项目中找不到参数的方法 android()

Xcode - 错误 : unable to open executable. ....如何修复?

build - GulpJS : How to rev images and then update

build - 在另一个项目中调用 gradle "build"任务