【问题标题】:How to make sure remote @imports are processed correctly with Grunt如何确保使用 Grunt 正确处理远程 @imports
【发布时间】:2015-06-17 09:53:55
【问题描述】:

我使用 Grunt 来构建我的项目和内部的 cssmin 任务。我的 CSS 文件包含远程 @import 语句和 grunt build 返回警告:

Running "cssmin:generated" (cssmin) task
>> Ignoring remote @import of "http://fonts.googleapis.com/css?family=Lato:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic" as no callback given.,Ignoring remote @import of "http://fonts.googleapis.com/css?family=Maven+Pro:500" as no callback given.
>> 2 files created. 322.48 kB → 249.05 kB

我在clean-css 库文档中找到了以下信息:

为了内联远程@import 语句,您需要提供一个 回调缩小方法,例如:

var CleanCSS = require('clean-css');
var source = '@import url(http://path/to/remote/styles);';
new CleanCSS().minify(source, function (errors, minified) {
  // minified.styles
});

这是由于一个事实,即虽然可以读取本地文件 同步,远程资源只能异步处理。 如果您不提供回调,则将留下远程 @imports 完好无损。

如何在我的 Gruntfile.js 中描述 cssmin 任务以正确处理远程 @import 语句?

【问题讨论】:

    标签: javascript node.js gruntjs grunt-contrib-cssmin


    【解决方案1】:

    @import 语句移动到 CSS 文件的顶部为我解决了这个问题,我遇到了同样的问题。当@import 语句位于文件中间时,cssmin 似乎不喜欢它。您可以使用 Grunt 中的 options 对象自动执行此操作,有关详细信息,请参阅此答案:https://stackoverflow.com/a/28454233/2142259

    【讨论】:

    • 这实际上解决了这个问题,因为 cssmin 不会重新定位 @imports 但这也不会导入远程 css 以避免使用 @importclean-css库提到的回调函数会内联@import远程引用的css文件。
    【解决方案2】:

    这不是最好的解决方案,但是当我将所有 @import 语句移动到另一个文件并将其插入到我的 html 文件中,就在我的主 css 文件之前,它对我有用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多