如何从缩小 css 构建 sourcemaps?

How to build sourcemaps from minifyed css?

我有项目:

project/
├── css/
│   ├── map/
|   │   └── style.min.css.map
│   └── style.min.css
└── style/
    ├── _head.sass
    ├── _nav.sass
    ├── _content.sass
    ├── _foot.sass
    └── style.sass

在 devtools 中,这个 sourcemap 总是只显示第一个文件,所有代码都在一行中。它不显示源代码和行号。如果我删除 .pipe(cssmin()),它会如我所愿地工作,但我需要缩小。我的 gulpfile:

var path = {
    build: {
        css: 'css/'
    },
    src: {
        style: 'style/*.sass'
    },
    watch: {
        style: 'style/*.sass'
    }
};

    gulp.task('style:build', function () {
    gulp.src(path.src.style)
        .pipe(sourcemaps.init())
        .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))
        .pipe(sass())
        .pipe(prefixer())
        .pipe(rename({ suffix: '.min' }))
        .pipe(cssmin())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(path.build.css))
        .pipe(reload({stream: true}))
        ;
    });

提前致谢!

在另一个分支建议使用gulp-if-else并且不要修改CSS,如果不是develop。分开 developproduction:

// Compiling Stylus in CSS | Production
gulp.task('css-build', function() {
    gulp.src('./styl/*.styl')
        .pipe($.newer('./public/css/'))
        .pipe($.stylus({
            use: nib()
        }))
        .pipe(cmq())
        .pipe($.csso())
        .pipe($.autoprefixer('last 3 versions'))
        .pipe(gulp.dest('./public/css/'))
});

// Compiling Stylus in CSS | Develop
gulp.task('css-dev', function() {
    gulp.src('./styl/*.styl')
        .pipe($.newer('./public/css/'))
        .pipe($.sourcemaps.init())
        .pipe(
            $.stylus({
                use: nib()
            })
            .on('error', $.notify.onError({
                title  : "Stylus Error",
                message: "<%= error.message %>",
                sound: "Blow"
            }))
        )
        .pipe($.autoprefixer('last 3 versions'))
        .pipe($.sourcemaps.write())
        .pipe(gulp.dest('./public/css/'))
        .pipe($.livereload())
});