18

我正在考虑将 LESS 用于带有服务器(或开发)端处理的 CSS 开发,但我无法决定是否应将生成的 CSS 文件保留在版本控制中。有很多带有钩子的解决方案,但这会增加对服务器的软件依赖。可以在本地添加一个钩子,这样网络上的暂存区和生产区就会得到相同的文件。所以,问题是:

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

当我说“考虑使用 LESS”时,我的意思是它成为了一项要求。在选择 LESS 后,新开发人员将无法选择使用 vanilla CSS。

4

5 回答 5

12

签入派生工件几乎总是次优的。

我对签入 .css 投反对票。您的同行或继任者之一签入对 .css 而不是 .less 的编辑只是时间问题。然后,当您更改 .less 时,先前的更改将丢失。

于 2012-11-01T21:58:26.103 回答
10

你几乎已经回答了你自己的问题。这取决于您如何部署您的网站。

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

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

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

如果您不是直接从 Web 服务器上的存储库中提取,则可以有一个构建脚本,该脚本从 git 中提取,生成 CSS,然后将内容传输到 Web 服务器,可能会从传输中排除不必要的文件。

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

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

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

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

于 2012-11-01T21:09:44.787 回答
2

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

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

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

  1. 你不能使用git add --patch(或者你这样做时真的需要非常小心)
  2. 您不应该直接修改 .css;相反,我通常使用辅助 .css 文件进行较小的修改,而无需修改主 .less 或 .css 文件。您还可以将 .less 文件直接编译为缩小的 css,以减少修改生成的 css 的诱惑力。
  3. 开发人员必须将他们的机器设置为使用自动重新编译工具(如 SimpLess 或 Less.app),因此 .css 文件在保存到 .less 文件后会立即更新。如果没有自动化,您将面临 css 与签入的 less 文件不匹配的风险。

但是,从 .C 和 .H 文件编译时我不会这样做,因为为它们生成的二进制文件是特定于平台的,而且 .less/.css 文件通常是较大 Web 项目的一小部分,因此空间开销附加文件很小。

于 2013-02-21T04:48:35.383 回答
0

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

于 2012-11-01T21:54:10.607 回答
-1

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

于 2012-11-01T21:24:07.203 回答