【问题标题】:How to manage version control and production deployments for compiled assets with Git and Grunt/Sass/Composer?如何使用 Git 和 Grunt/Sass/Composer 管理已编译资产的版本控制和生产部署?
【发布时间】:2014-07-20 21:40:40
【问题描述】:

我正在用 PHP + HTML + CSS + JS 构建一个应用程序。这是设置:

  • 我的 PHP 框架依赖 Composer 来设置/更新
  • 我使用的是 SCSS,所以我有一个用于 scss 的文件夹,该文件夹被编译到 css 文件夹中
  • 我正在通过 Grunt 自动编译(和其他东西)
  • 我正在使用 Git 跟踪所有内容

当我部署到登台/生产时,我从在线 Git 存储库中 git clone(或 git pull)所需的分支(开发或主)。

我过去使用 Git 跟踪几乎所有内容,包括编译的 CSS 和安装的 PHP 模块(通过 Composer),因此很容易部署:我只需要从在线 repo 中提取所有内容即可。

但我觉得在 Git 中跟踪所有这些东西并不好,因为我认为我应该只跟踪源文件(CSS 为 SCSS,PHP 模块为 composer.json/composer.lock)。

现在我的问题是:

  • 我不应该跟踪 CSS 编译文件而只跟踪 SCSS 文件是否正确?
  • 对于通过 Composer 安装的 PHP 模块也是如此
  • 如果我不跟踪所有文件并通过git pull 进行部署,我将需要在所有机器(暂存/生产)上安装 Grunt/Compass/Composer,这对我来说并不合适将它们视为构建工具而不是应用的一部分
  • 将 Git 与 Grunt/Compass/Composer(或类似的东西)一起使用进行部署的最佳实践是什么?

任何意见/建议将不胜感激!

【问题讨论】:

    标签: git gruntjs composer-php compass-sass web-deployment


    【解决方案1】:

    一个答案(我们使用的)是在持续集成机器上进行资产编译。我们认为这是我们的暂存环境。
    从这里我们将编译后的文件复制到生产环境(即我们不在生产环境中生成它们)。

    在某些情况下,您可能希望允许开发人员在本地编译(如果框架需要它进行开发),但在推送到远程时忽略这些文件/目录。这本质上是我们用于 Ruby on Rails gem 文件的过程,这些文件由 bundler 处理。与 css/js 资产略有不同,但涉及编译或更改文件的类似概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 2014-03-25
      • 2019-02-05
      • 2012-02-06
      • 1970-01-01
      • 2013-11-04
      • 2015-03-03
      • 1970-01-01
      相关资源
      最近更新 更多