【发布时间】:2011-04-11 22:50:28
【问题描述】:
我开始使用 sass scss 样式表。这些从 *.scss 文件生成 *.css 文件。我的问题是,您将哪些文件检查到版本控制中?现在我签入main.scss 和生成的main.css。我想知道是否有办法只签入 *.scss 文件并确保在部署时生成 *.css 文件。
【问题讨论】:
标签: ruby-on-rails-3 capistrano sass
我开始使用 sass scss 样式表。这些从 *.scss 文件生成 *.css 文件。我的问题是,您将哪些文件检查到版本控制中?现在我签入main.scss 和生成的main.css。我想知道是否有办法只签入 *.scss 文件并确保在部署时生成 *.css 文件。
【问题讨论】:
标签: ruby-on-rails-3 capistrano sass
我更喜欢将它们签入。我们从 git 部署到我们的暂存和生产环境,并且在部署到生产环境时我不希望依赖另一个工具/编译。这样一来,推出的内容就一目了然了。
【讨论】:
一般来说,您通常不需要将生成的文件签入源代码管理。只要您的代码生成始终如一,并且您始终使用它来更新您的目标 .css 文件,我认为您不需要将它们置于源代码管理中。
也就是说,不将生成的文件放入源代码管理的建议通常更多用于二进制文件(即从构建生成的库或可执行文件)。造成这种情况的主要原因是二进制文件不容易区分/合并,因此如果多人尝试签入对同一个二进制文件的更改,您最终可能会遇到无法轻松解决的合并问题。由于您正在处理纯文本 css 文件,因此我认为将它们也放入源代码控制中没什么大不了的,这样您就可以备份实际的目标文件。
【讨论】:
我喜欢借鉴服务器端开发人员在处理已编译的前端代码(如 sass)时使用的约定。我将所有源代码与编译代码分开。以下是我的设置方式:
将您的源代码放在主目录/语言名称下的 src 目录中,在这种情况下:
/path-to-my-app/src/main/sass/my-syntactically-awesome-file.scss
然后将测试放在相同的测试目录中(不过,您应该不需要任何 sass 测试:
/path-to-my-app/src/test/sass/my-syntactically-awesome-test.whatever
然后将编译后的代码放在一个可以发布的目录中,如下所示:
/path-to-my-app/publish/css/my-syntactically-awesome-file.css
然后提交整个 shebang (!)
您可以确保始终将 css 放在正确的位置,如下所示:
$ cd /path-to-my-app
$ sass --watch src/main/sass/*.scss:publish/css/
宝贝,现在你是一位妈妈级的程序员了!
【讨论】: