【问题标题】:How can I remove comments on-fly from my static CSS files?如何从我的静态 CSS 文件中即时删除评论?
【发布时间】:2010-08-02 14:01:29
【问题描述】:

我正在使用 facelets,webapp/styles/blueprint/*.css 中有许多 CSS 文件。它们包含我不想让最终用户看到的 cmets。如何即时删除它们?

【问题讨论】:

  • 缩小 CSS 作为构建选项的一部分吗?为相同的结果执行一次操作比对 CSS 的每个请求都执行一次要高效得多。
  • @Nick,是的,我同意,这是一个选项

标签: java css facelets


【解决方案1】:

使用YUI compressor。它不仅会删除 cmets,还会缩小 CSS(和 JS)文件。

Reader reader = null;
Writer writer = null;

try {
    reader = new InputStreamReader(new FileInputStream(cssFile), "UTF-8");
    writer = new OutputStreamWriter(new FileOutputStream(minFile), "UTF-8");
    new CssCompressor(reader).compress(writer, -1); // That's it.
} finally {
    close(writer);
    close(reader);
}

另见

【讨论】:

    【解决方案2】:

    正如 Nick Craver 在 cmets 中所说,您应该(如果有的话)将该工作作为构建过程的一部分,因为 css 是一种静态资源。无需运行时修改。

    现在,根据您的构建过程,您可以编写一个小脚本来简单地去除任何 cmets,我的第一种方法是正则表达式:

    cssFileContents = cssFileContents.replaceAll("/\*.*?\*/", ""); //with lazy quantifier on the "."!
    

    在这种情况下,您需要确保正则表达式“.”-元字符包含换行符。

    由于 css 只允许块 cmets (/* ... */) 而不允许行 cmets (// ... \n),因此您唯一需要替换的就是这个。

    【讨论】:

    • 听起来不错,谢谢!但我认为可能存在一些库,它们可以自动执行该过程并做一些额外的工作。比如CSS的优化和压缩……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多