sass - 一个 Gulp 流中的两个 Sass Sourcemap

标签 sass gulp source-maps

我创建了一个 Gulp 任务 styles,它从 Sass 文件创建缩小和非缩小的 CSS 文件。我还想创建缩小和非缩小的 Sourcemap,但是,这似乎不起作用。

这是代码:

// Compile Sass, Autoprefix and minify
gulp.task('styles', function() {
  return gulp.src('./assets/scss/**/*.scss')
    .pipe(plumber(function(error) {
            gutil.log(gutil.colors.red(error.message));
            this.emit('end');
    }))
    .pipe(sourcemaps.init()) // Start Sourcemaps
    .pipe(sass())
    .pipe(autoprefixer({
            browsers: ['last 2 versions'],
            cascade: false
        }))
    .pipe(sourcemaps.write('../maps'))    
    .pipe(gulp.dest('./assets/css/')) // Create sourcemap
    .pipe(rename({suffix: '.min'}))
    .pipe(cssnano())
    .pipe(sourcemaps.write('../maps')) // Create minified sourcemap
    .pipe(gulp.dest('./assets/css/'))
});    

目前,这会引发错误并且不会创建缩小的源映射。但是,如果我删除 sourcemap.write 实例之一,那么它就完全可以正常工作。

是否可以在一个流中创建两个源映射?

最佳答案

实现这样的事情怎么样?

https://github.com/ben-eb/gulp-cssnano/issues/21

编辑:我从上面的链接尝试..我让它运行没有任何错误。

   // Grab our gulp packages
var gulp  = require('gulp'),
    gutil = require('gulp-util'),
    sass = require('gulp-sass'),
    cssnano = require('gulp-cssnano'),
    autoprefixer = require('gulp-autoprefixer'),
    sourcemaps = require('gulp-sourcemaps'),
    jshint = require('gulp-jshint'),
    stylish = require('jshint-stylish'),
    uglify = require('gulp-uglify'),
    concat = require('gulp-concat'),
    rename = require('gulp-rename'),
    plumber = require('gulp-plumber'),
    bower = require('gulp-bower'),
    merge = require('merge-stream'),
    clone = require('gulp-clone'),
    browserSync = require('browser-sync').create(),
    clip = require('gulp-clip-empty-files');

gulp.task('styles', function() {
    var source = gulp.src('./assets/scss/**/*.scss')
        .pipe(plumber(function(error) {
            gutil.log(gutil.colors.red(error.message));
            this.emit('end');
    }))
        .pipe(sass())
        .pipe(sourcemaps.init()) // Start Sourcemaps
        .pipe(autoprefixer({
            browsers: ['last 2 versions'],
            cascade: false
    }));

    var pipe1 = source.pipe(clone())
    .pipe(sourcemaps.write('../maps'))
    .pipe(gulp.dest('./assets/css/')); // Create sourcemap

    var pipe2 = source.pipe(clone())
    .pipe(rename({suffix: '.min'}))
    .pipe(cssnano())
    .pipe(sourcemaps.write('../maps')) // Create minified sourcemap
    .pipe(clip())
    .pipe(gulp.dest('./assets/css/'));

    return merge(pipe1, pipe2);
});

如果像 cimmanon 一样建议您可能不想要缩小的源 map ,只需删除

.pipe(sourcemaps.write('../maps')) // Create minified sourcemap

来自

var pipe2

关于sass - 一个 Gulp 流中的两个 Sass Sourcemap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140318/

相关文章:

javascript - vue.js - 将 sass 样式从一个组件绑定(bind)到另一个组件

node.js - 生成子进程时管理 Gulp 依赖项

javascript - 公开 JavaScript 源映射有什么合法的安全问题吗?

javascript - JSPM/SystemJS 找不到 source-map-support.js

css - 拒绝应用来自 "https://cd.shopify.com/xxxxx/assets/compass.css3"的样式,因为它的 MIME 类型为 ('text/html' )

html - Span 无法识别父元素 - 重叠

sass - 为什么我在 Compass 中得到 "Undefined mixin ' border-radius'"?

javascript - 为什么要全局和本地安装 gulp?

javascript - 在 Gulp 任务中获取相对源/目标

javascript - 从传递依赖中删除 moment.js