版本控制:如何在环境之间控制css和js压缩/缩小版本

时间:2013-03-20 14:54:52

标签: javascript css git version-control

我正在使用git(通过GitHub)对我的项目进行版本控制。我还是新手,但我想了解如何让我的cssjs文件在环境之间保持同步。

示例:假设我在dev上编写了一个js脚本。我很满意我的工作,我推动测试。在测试时,我想要一个缩小/压缩版本。如果没有大量的开销任务,我将如何实现这一目标?你们做什么的?我假设它是某种部署脚本的一部分,它会压缩代码并将其推送到我指定的任何环境。

这提出了另一个问题:我的项目中的header(和/或footer)文件怎么样?如果我的dev有:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.css">

我的testing有:

<link rel="stylesheet" href="<?php echo base_url(); ?>css/main.min.css">

这一切都很好,但如果我需要更改标题怎么办?我如何将所有这些东西彼此分开?如果我对标题进行更改并推送到测试或制作,我将从该包含行中丢失.min

目前,在我想要更新的环境中,从命令行部署更新只是一个简单的git pull origin [branch]

同样,我正在寻找最佳实践,无论学习它需要什么。谢谢!

3 个答案:

答案 0 :(得分:5)

您可能想要查看预处理器工具,例如LESS或Sass。这些工具允许您编写CSS(我相信他们也可以为了缩小目的而处理JS),并根据环境设置脚本来处理编译代码的方式。

然后,您要在“源”文件中编写代码,并设置预处理程序以根据设置文件中的设置编译代码(对于Sass,使用Compass可以轻松完成框架),基于你所处的环境。然后你只保留存储库中的源文件(设置Git忽略编译版本),并设置post-receive钩子来编译服务器上的源文件。然后可以编写HTML来访问已编译的文件(这些文件应该在不同的环境中具有相同的名称),因此您不必每次都编写逻辑来确定代码运行的环境。

答案 1 :(得分:1)

通常,CMS会在页面加载时生成缩小文件。因此,从代码的角度来看,您不需要跟踪缩小版本,因为所有代码都会在您的实际js和css文件中进行跟踪。因此,使用.gitignore文件可以忽略缩小的副本。

我的.gitignore文件通常如下所示:

css-min            #directory to store generated minified css files
js-min             #directory to store generated minified js files
tmp                #directory to store temporary files
files/images/cache #directory for storing generated images such as thumbnails
settings.php       #File that stores system variables.

设置文件用于设置全局变量,例如您的平台,例如&#34; dev&#34;,&#34; staging&#34;,&#34; production&#34;。然后在您的其他文件中,您可以检查平台上要使用的css / js文件。由于存储库会忽略该文件,因此您可以针对每个平台进行特定设置。

if ($GLOBAL['platform'] = PLATFORM_DEV) {
  $path = 'css/main.css';
}
elseif ($GLOBAL['platform'] = PLATFORM_STAGE) {
  $path = 'css-min/main.min.css';
}

<link rel="stylesheet" href="<?php print base_url(); print $path; ?>">

答案 2 :(得分:1)

  1. 不要将缩小版的CSS,JS放入版本控制中。这是重复的。

  2. Git可以在delopy上使用,但其目的不是部署。

  3. 对于包含CSS标签,这很容易。快速综述是使用您的框架的env vairable。据我所知CodeIgniter有这个功能。如果env == test,请包括缩小版本,如果没有,请包含原始版本。

  4. 此外,您需要一个构建脚本或框架插件来自动生成缩小版本。