1

精简版

当使用像 YUI 压缩器这样的文件压缩器时,部署网站的正确程序是什么,这样您就不必在开发期间弄乱压缩文件?作为发布过程的一部分,是否应该有一个压缩脚本?

长版

我刚刚加入了一个项目,我们将 YUI 压缩器用于 JS 和 CSS 文件。我遇到了一些对我来说闻起来很臭的代码块。我想知道是否有更好的方法来做到这一点。

我认为,在编写代码时,开发人员应该可以自由地处理未压缩的文件,并且网站仍然可以正常工作并反映他们所做的更改。然后可以在发布时压缩更改后的 css 和 js 文件。这不是这里的情况。

基本上,在我们的核心 php 页面上检查 PHP_SAPI,如果它是命令行,则运行压缩器。这包括运行一个execongit log然后一些sed魔法来获取当前的修订号(用作 css 和 js 文件版本),然后proc_opening yuicompressor,在文件上运行它,再多几个execs 将新文件添加到git ...然后一些巫术进入php文件本身(是的,它是自我修改的)并将$version变量声明更改为新的修订号。此变量用于include正确的 css 和 js 文件。

当我第一次从我们的 repo 中检查代码时,网站在本地运行,但没有 css。一位同事告诉我,我需要运行一个调用上述咒语的 shell 脚本。在成功之前,这需要大约半小时的时间来调整文件权限。

这闻起来有我想的那么难闻吗?我们如何才能摆脱它作为开发步骤,并有可能在开发过程中只包含常规的未压缩文件?就像现在一样,我无法对所述文件进行更改并立即查看它们。在发布时这样做的问题是,在压缩文件时,包含必须更改为压缩文件。似乎这也需要修改代码的脚本。有任何想法吗?

4

1 回答 1

1

伙计 :) 我可以帮你解决这个问题 - 我(主要)将 YUI Compressor 移植到 .NET,因为我需要确保......当我们部署我们的代码时......公共服务器已经缩小/组合了 css 和 js。.. 这可能适用于任何语言/部署方案,尽管我的方案是 .NET / TFS 特定的。

诀窍是确保在您的开发过程中源文件完全不被触及。绝不。只有当您将代码从您自己的开发(又名 Localhost)机器推送到其他服务器(即 Dev/Test/Uat/Live-Production)时,css/js 才应该被缩小和/或组合。

在本地开发机器上工作时使用缩小和/或组合的 css/js 太难了.. 特别是如果您正在处理 UI 体验.. 即。做javascript/html/css。

那么我们该怎么办?首先,我们需要有一个部署解决方案。对于 .NET,我们使用 TFS 将代码部署到服务器。但是还有很多其他选项..就像我认为 Ruby On Rails 窥视可以使用 Rake 并在其中添加 YUICompressor 任务。

使用 TFS,我们可以进行持续集成……因此,每当签入某些代码时,我们的系统或多或少都会执行以下操作(这是本文的症结所在)。

..进入临时位置...

  • 获取最新代码
  • 编译最新代码
  • 缩小和/或组合任何 js 或 css .. 并且这些新创建的文件进入编译代码的临时位置。
  • 将此代码/网站从该临时位置发布到所需的 Web 服务器(dev/test/uat/prod.. 等)。

该列表中至关重要的是,所有这些都发生在临时位置。不在您当前的开发文件夹中。你不想弄乱你的主要源文件。

所以如果你能告诉我们

  • 您的代码的存储位置(源代码)。我想你说的是GIT?
  • 什么语言(php?)
  • 最重要的是,您如何将代码从源代码控制获取到实时服务器?
于 2010-09-24T11:27:00.833 回答