为编译后的sass/scss文件添加时间戳

10

使用SASS是否可以自动在编译后的CSS文件上添加时间戳?例如:

/* CSS Compiled on: {date+time} */
...compiled css goes here...

我查看了SASS和Compass文档,但没有提到这样的功能。

3个回答

16
我不知道SASS或Compass中是否有内置功能可以实现此功能,但是添加自定义的Ruby函数并不难。(请参见SASS参考文档中标题为“Adding Custom Functions”的部分 here。)
您的带有Ruby函数的文件将如下所示(我们将其称为“timestamp.rb”):
module Sass::Script::Functions
    def timestamp()
        return Sass::Script::String.new(Time.now.to_s)
    end
end

您可以在SASS文件中这样引用新的时间戳函数:

/*!
 * CSS Compiled on: #{timestamp()}
 */

您只需要确保在编译SASS时加载了“timestamp.rb”文件,可以通过从Compass配置文件中要求它,或使用SASS命令行的--require参数来实现。最终,您应该得到如下输出:

/*
 * CSS Compiled on: 2012-10-23 08:53:03 -0400
 */

我该如何从config.rb中引用它? - Capi Etheriel
3
请在config.rb文件中加入以下代码(假设timestamp.rb与config.rb在同一目录下): require File.join(File.dirname(__FILE__), 'timestamp.rb')。 这句话的作用是引入timestamp.rb文件并使其可被config.rb文件使用。 - hopper
@hopper,这个很好用,我刚把这个函数添加到我的config.rb文件中。再次感谢。 - budji

1

我不知道是否每个人都需要它(因为这个问题很久以前就已经回答了),但一个简单的解决方案是将时间戳/日期写入单个SASS变量的文件中,将它们导入到应该放置时间戳的位置,然后让SASS中的注释将它们写出来。

无需安装、编译或任何其他操作-只需使用脚本和SASS:

1.) 将时间戳写入单独的SASS文件中:(这里是一个DOS脚本,但您也可以使用任何其他脚本/语言生成简单的文件):

echo $BuildTimeStamp : "%date% %time%"> _timestamp.scss 

2.) 使用时间戳导入生成的文件:

@import '_timestamp.scss';

3.) 将标题作为注释写出:

/*! Automatic build at: #{$BuildTimeStamp} */

在调用原始的sass命令之前编写时间戳,这样它也可以正常工作,而无需安装、构建或执行任何其他操作。

1
如果您正在使用SCSS的命令行版本,则可以执行以下操作:
  1. 安装sass-timestamp

    gem install sass-timestamp

  2. 在代码中使用它(有关更多信息,请参见documentation

    /* 编译于#{timestamp()} */

  3. 在命令行上要求它

    scss -r sass-timestamp ...

  4. 输出将是

    /* 编译于2015-02-02 13:01:40 +0800 */

注意:使用#{unix_timestamp()}获取Unix时间戳。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接