gulp-sass将Google Fonts CSS编译到文件中,打破了协议相关链接

时间:2015-08-14 02:24:59

标签: sass gulp gulp-sass protocol-relative gulp-clean-css

当我在.scss文件

中使用以下代码时
@import url('//fonts.googleapis.com/css?family=SomeFont:400,700,400italic');

我使用的SASS解析器(nodejs gulp-sass)愉快地从所述位置下载文件,并将其作为纯文本包含在已编译的输出中。

这是我的Gulpfile:

var gulp = require('gulp'),
    sourcemaps = require('gulp-sourcemaps'),
    autoprefixer = require('gulp-autoprefixer'),
    minify = require('gulp-minify-css'),
    rename = require('gulp-rename'),
    sass = require('gulp-sass'),
    uglify = require('gulp-uglify'),
    plumber = require('gulp-plumber');

gulp.task('sass', function() {
    gulp.src('www/sass/*.scss')
        .pipe(plumber(function(err){
            console.log(err);
            this.emit('end');
        }))
        .pipe(sourcemaps.init())
            .pipe(sass({
                outputStyle: 'expanded',
                errLogToConsole: true,
            }))
            .pipe(autoprefixer('last 2 version'))
            .pipe(rename({suffix: '.min' }))
            .pipe(minify())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('www/css'));
});

问题是,我的网站使用HTTPS,当编译器请求文件时,它使用HTTP获取文件,因此返回的响应中的URL也是{{1}这会导致大量警告填满控制台,而字体则无法加载。

有什么方法可以告诉编译器单独留下那一行吗?

2 个答案:

答案 0 :(得分:13)

问题不在于gulp-sass本身,而是gulp-minify-css对压缩渲染的CSS文件。解决方案是将{processImport: false}传递给minify

gulp.task('sass', function() {
    gulp.src('www/sass/*.scss')
        .pipe(plumber(function(err){
            console.log(err);
            this.emit('end');
        }))
        .pipe(sourcemaps.init())
            .pipe(sass({
                outputStyle: 'expanded',
                errLogToConsole: true,
            }))
            .pipe(autoprefixer('last 2 version'))
            .pipe(rename({suffix: '.min' }))

            // Here
            .pipe(minify({processImport: false}))

        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('www/css'));
});

答案 1 :(得分:0)

Protocol relative URLs are now discouraged。我建议将URL设置为HTTPS并保持这种状态。