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

Posted

技术标签:

【中文标题】为编译的 sass/scss 添加时间戳【英文标题】:Add timestamps to compiled sass/scss 【发布时间】:2012-10-12 21:55:59 【问题描述】:

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

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

我查看了 SASS 和 Compass 文档,但没有提及此类功能。

【问题讨论】:

【参考方案1】:

我不知道任何内置的 SASS 或 Compass 功能,但添加自定义 Ruby 函数来实现它并不难。 (参见 SASS 参考文献here 中标题为“Adding Custom Functions”的部分。)

您的带有 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 中要求它? @barraponto 在 config.rb 文件中包含这样的一行(假设 timestamp.rb 与 config.rb 在同一目录中):require File.join(File.dirname(__FILE__), 'timestamp.rb') @hopper,这很好用,我刚刚将该函数添加到我的 config.rb 文件中。再次感谢。【参考方案2】:

如果您使用的是命令行版本的 SCSS,您可以执行以下操作:

    安装sass-timestamp

    gem install sass-timestamp

    在您的代码中使用它,例如(请参阅documentation 了解更多信息)

    /* Compiled on #timestamp() */

    在命令行中需要它

    scss -r sass-timestamp ...

    输出将是

    /* Compiled on 2015-02-02 13:01:40 +0800 */

注意:使用#unix_timestamp() 作为unix 时间戳

【讨论】:

【参考方案3】:

不知道大家是否需要(因为这个问题很久以前就回答过了), 但一个简单的解决方案是写时间戳/日期 到单个 sass/scss 文件作为 SASS 变量, 将它们导入到时间戳应该所在的位置 然后让 sass 中的评论将它们写出来。

无需安装、编译或其他任何东西 - 只需使用脚本和 sass:

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

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

2.) 导入带有时间戳的生成文件:

@import '_timestamp.scss';

3.) 将标题写为注释:

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

在调用原始 sass 命令之前写入时间戳 它也可以在不需要安装、构建或做任何其他事情的情况下工作。

【讨论】:

以上是关于为编译的 sass/scss 添加时间戳的主要内容,如果未能解决你的问题,请参考以下文章

仅在项目发生更改时添加编译时间戳 (C)

如何使用 node-sass(无 Ruby)编译或转换 sass / scss 为 css?

如何使用 grunt-sass 编译多个 scss 文件

HubilderX中编译sass文件

HubilderX中编译sass文件

如何使用 cron 为日志输出条目添加时间戳?