使用LESS和版本控制:生成的CSS应该包含在回购中吗?

时间:2012-11-01 20:44:23

标签: css wordpress git version-control less

我正在考虑将LESS用于服务器(或开发)端处理的CSS开发,但我无法决定是否应该将生成的CSS文件保留在版本控制中。有许多带钩子的解决方案,但这会为服务器增加软件依赖性。可以在本地添加挂钩,因此Web上的暂存和生产区域将获得相同的文件。所以,问题是:

生成的CSS文件是否应包含在版本控制中?请记住,某些框架因特定原因需要CSS文件存在(即WordPress主题需要style.css文件才能被识别)。

干杯!

编辑:当我说'考虑使用LESS'时,我的意思是它成为一种要求。在选择支持LESS之后,新开发人员将无法使用vanilla CSS。

5 个答案:

答案 0 :(得分:12)

检查派生的工件几乎总是次优的。

我投票否决检查.css。只有一个时间问题,直到你的同伴或继承人检查.css的编辑而不是.less。然后,当您更改.less时,先前的更改将丢失。

答案 1 :(得分:9)

你已经回答了自己的问题。这取决于您部署网站的方式。

如果服务器只是直接从Git存储库中提取:

1)需要安装软件才能从LESS生成CSS。

2)或者您需要将CSS文件包含在存储库中。

如果您没有直接从Web服务器上的存储库中提取,那么您可以使用构建脚本从git中获取,生成CSS,然后将内容传输到Web服务器,可能会从中排除不必要的文件转移。

在我看来,Git应该用于保留项目的所有源,而不是“派生的工件”(如@thekbb所述)。开发人员需要安装所有工具,以便在开发和测试期间生成这些派生工件。对于部署到测试和生产服务器,自动构建服务器应该获取源并仅创建分发所需的文件。

在软件开发的情况下,你的Git存储库中有一个带有.C和.H文件的Makefile(例如)。开发人员和构建服务器安装了一个编译器,用于创建可执行文件或编译库。打包文件以进行分发时,源代码不是存档的一部分。

对于Web开发,您有源文件,如原始图形,HTML模板和LESS文件。开发人员和构建服务器可以运行脚本来生成站点资产(来自LESS文件的CSS,来自模板的静态HTML页面,多种大小/格式的展平图像等)。当构建服务器部署新构建时,它只复制所需的文件由服务器,不包括源图形,模板和LESS文件。

如果有人需要查看网站内容,则应在登台服务器上执行此操作。如果不可能,自动构建服务器可以在内部服务器上创建一个ZIP文件,供他们下载以供审核。

答案 2 :(得分:2)

  

生成的CSS文件是否应包含在版本控制中?

理论上它们不应该,但为了实用,我通常会检查生成的css文件。原因是它简化了部署,因为我使用git进行部署;我不需要在服务器上安装较少的编译器,甚至通常也不需要在我正在部署的机器上(与我正在开发的机器相反)。如果您有单独的开发人员和部署人员,这样做可能很有用,但即使您自己部署也可能有用。

现在,这样做有一些缺点:

  1. 你不能使用git add --patch(或者你真的需要非常小心)
  2. 您不应该直接修改.css;相反,我通常使用辅助.css文件进行微小修改而不修改主.less或.css文件。你也可以将.less文件直接编译成一个缩小的css,以减少修改生成的css的诱惑力。
  3. 开发人员必须将他们的机器设置为使用自动重新编译工具(如SimpLess或Less.app),因此.css文件会在保存到.less文件后立即更新。如果没有自动化,您将面临css与签入的较少文件不匹配的风险。
  4. 从.C和.H文件编译时我不会这样做,因为生成的二进制文件是特定于平台的,而.less / .css文件通常只是较大的Web项目的一小部分,所以附加文件的空间开销很小。

答案 3 :(得分:0)

好问题。如果你可以绝对保证在LESS更新时CSS文件得到更新,那么也许是 - 根据@Scott Simpson的评论。我怀疑这很难保证,当新开发人员在他们不同步的那天获得CSS的副本时会发生什么?当然,我最初并没有想到这一点,如果新的开发人员然后对CSS文件而不是LESS进行更新会发生什么?如果必须构建CSS并且不是归档的一部分,我可以看到更少的问题。

答案 4 :(得分:-1)

我会说是的 - 因为如果您想在工作流程中添加开发人员并且他们不想或不需要构建,会发生什么。他们只能访问生成的文件会很有帮助。