【问题标题】:Compress JS/CSS files on deploy using Git使用 Git 在部署时压缩 JS/CSS 文件
【发布时间】:2012-11-21 05:32:47
【问题描述】:

我对 git 有点陌生。此外,这是我的第一个项目,我正在自动化部署过程。到目前为止,能够做到git push dev 并上传文件、复制配置文件等已经很幸福了。

现在我想在推送到我的开发服务器时缩小 JS/CSS 文件。我正在考虑在服务器上安装一些命令行工具,用于在接收后的 git 钩子上压缩和保存特定文件夹中的每个 js/css 文件。

这是一个好方法吗? (因为我读过关于将压缩文件添加到 repo 和其他我不太相信的想法)

如果是,哪些工具最适合这项任务?

【问题讨论】:

  • 你想加速'git push'吗?
  • 不,抱歉,我们的目标是缩小 js/css 文件。我会在我的问题中说明这一点。
  • 好的,你为什么不在客户端缩小文件?
  • 我想这是一个有效的选择。这就是我要问的一部分。当然,有一些限制: -我不想对缩小文件进行版本控制。 -我想在本地开发中使用非缩小文件
  • 您希望将文件替换为缩小版本还是缩小文件具有不同的名称可以?您的部署过程目前如何运作?

标签: git deployment githooks minify


【解决方案1】:

通过在 dev 上重写文件并且在本地存储库中没有缩小文件,这两个存储库将始终彼此不同步。

您可能需要重新考虑将站点部署到 dev 的方式,而不是推送到 dev,例如,您可能希望从 prestine 存储库中拉取 dev。

【讨论】:

【解决方案2】:

http://git-scm.com/book/ch7-2.html

我假设您将从不在服务器上进行提交,即服务器将用于签出更新的 master 而从不更新它。这个技巧将在结帐时自动缩小任何 *.css 文件:

# within repo
$ echo '*.css filter=minify' >> .git/info/attributes
$ git config filter.minify.clean  cat
$ git config filter.minify.smudge minify-command

其中 minify-command 应该是缩小 *.css 文件的命令,即

$ cat foo.css | minify-command > foo-minified.css

它接近你想要的吗?

【讨论】:

  • 这是一个安全的假设。 'dev' 只是一个用于检出 master 然后将我需要的文件复制到 webroot 的遥控器。
  • 另外,我认为这可能会奏效,尽管我必须阅读一些内容,因为我实际上一半都看不懂:$
  • 是的,别相信我!自己仔细检查一下:)
  • 我将其标记为已接受,但我只是在我的 post-receive 挂钩中使用了 google 闭包编译器和压缩文件。
【解决方案3】:

也许您正在寻找添加一个 post-checkout 钩子(或者可能是另一个钩子,根据您的部署系统),然后使用将缩小文件的脚本启动。

你也可以在做之前使用钩子检查相关文件的修改日期

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多