6

我正在使用 git(通过 GitHub)对我的项目进行版本控制。我对此仍然很陌生,但我想知道如何在环境之间保持我的cssjs文件同步的最佳实践。

示例:假设我js在 dev 上编写了一个脚本。我对我的工作很满意,我努力进行测试。好吧,在测试中,我想要一个缩小/压缩的版本。在没有大量开销任务的情况下,我将如何做到这一点?你们是做什么的?我假设它是某种部署脚本的一部分,可以压缩代码并将其推送到我指定的任何环境。

这带来了另一个问题:我的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]从我要更新的环境中的命令行进行的一个简单操作。

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

4

3 回答 3

5

您可能想查看预处理器工具,例如 LESS 或 Sass。这些工具允许您编写 CSS(我相信它们也可以处理 JS,以用于缩小),并根据环境设置处理它们如何编译代码的脚本。

那么,您要做的就是在“源”文件中编写代码,并设置预处理器以根据设置文件中的设置编译代码(对于 Sass,这可以通过 Compass 框架轻松完成),根据您所处的环境。然后您将只保留存储库中的源文件(将 Git 设置为忽略已编译的版本),并设置接收后挂钩以编译服务器上的源文件。然后可以编写您的 HTML 以访问已编译的文件(跨环境应该具有相同的名称),因此您不必每次都编写动态确定代码运行环境的逻辑。

于 2013-03-20T15:04:00.327 回答
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.

设置文件用于设置全局变量,例如您的平台,如“dev”、“staging”、“production”。然后在您的其他文件中,您可以检查平台以使用哪些 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; ?>">
于 2013-03-20T15:06:51.340 回答
1
  1. 不要将缩小版的 CSS、JS 放入版本控制中。那是重复的。

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

  3. For the including CSS tags, that's easy. A quick roundup is use your framework's env vairable. As I know CodeIgniter has this function. If env == test, include minified version, if not, include raw versions.

Besides you need a build script or framework plugin to generate minified versions automatically.

于 2013-03-20T15:07:45.220 回答