【问题标题】:Inlining data-urls with Stylus and Gulp使用 Stylus 和 Gulp 内联数据 URL
【发布时间】:2015-02-28 05:54:02
【问题描述】:

目前我有一个导入另一个手写笔文件的手写笔文件。第二个文件使用这样的 URL 函数,我希望它被内联(例如到一个 base 64 data-url)。但是,当通过我的 gulp 管道运行时,这不起作用

lines.styl

vertical-img = 'vertical.svg';
@import "../tree";

tree.styl

background-image: url(vertical-img)

我想要得到的结果是:

background-image: url('data:image/svg+xml;utf8,<svg>[...]</svg>');

但我明白了:

background-image: url("vertical.svg")

而我的 gulpfile 如下:

return gulp.src('src/css/*/*.styl')
    .pipe(gstylus({
        set: ['resolve url']
    }))
    .pipe(rename(function (file) {
        file.dirname = "";
        file.extname = ".css";
    }))
    .pipe(gulp.dest(DEST))

基本上,'resolve url' 选项似乎没有传递给手写笔。我知道我需要它,因为它在Stylus Docs 中说:

默认情况下,Stylus 不会解析导入的 .styl 文件中的 url,所以如果你碰巧有一个带有 @import "bar/bar.styl" 的 foo.styl ,它会有 url("baz.png" ),在生成的 CSS 中也是 url("baz.png")。

但您可以通过使用 --resolve-url(或仅 -r)CLI 选项来更改此行为,以在生成的 CSS 中获取 url("bar/baz.png")。

【问题讨论】:

    标签: css gulp stylus


    【解决方案1】:

    图像内联的正确选项是url(不是resolve url)参见http://learnboost.github.io/stylus/docs/functions.url.html。要在gulp-stylus 中使用它,您应该将url 选项传递给选项对象(请参阅https://github.com/jenius/accord/blob/master/docs/stylus.md#url)。例如:

    return gulp.src('src/css/*/*.styl')
    .pipe(gstylus({
        url: { name: 'url', limit: false }
    }))
    .pipe(rename(function (file) {
        file.dirname = "";
        file.extname = ".css";
    }))
    .pipe(gulp.dest(DEST))
    

    【讨论】:

    • 我认为 url 函数的文档很不清楚,所以谢谢!
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多