我正在使用git(通过GitHub)对我的项目进行版本控制。我还是新手,但我想了解如何让我的css
和js
文件在环境之间保持同步。
示例:假设我在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]
。
同样,我正在寻找最佳实践,无论学习它需要什么。谢谢!
答案 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)
不要将缩小版的CSS,JS放入版本控制中。这是重复的。
Git可以在delopy上使用,但其目的不是部署。
对于包含CSS标签,这很容易。快速综述是使用您的框架的env vairable。据我所知CodeIgniter有这个功能。如果env == test,请包括缩小版本,如果没有,请包含原始版本。
此外,您需要一个构建脚本或框架插件来自动生成缩小版本。