是否可以生成包含所有这些转换的源图?
gulp.task('styles', function() {
return gulp.src(source.styles)
.pipe(plumber())
.pipe(gulpif(/\.less$/, plumber().pipe(less({
strictMath: true,
strictUnits: true,
}))))
.pipe(concat('bundle.css'))
.pipe(prefixer(['last 2 versions', '> 1%', 'ie 9'], {cascade: false}))
.pipe(minifyCss())
.pipe(gulp.dest('public/css'));
});
使用的图书馆:
我知道less可以生成源图,gulp-concat我认为不支持它们,autoprefixer应该保留它们,minify-css / clean-css don&# 39;似乎没有提到源地图。我运气不好吗?
答案 0 :(得分:7)
今晚我遇到了同样的问题,我仍在努力找到一个干净的解决方案。但是,我只是设法让事情变得有效,所以我想我会分享:
注意:我既不使用gulpif
也不使用minify
使用gulp-sourcemaps
,因为gulp-less
似乎没有源地图选项(至少目前)。
将 gulp-concat
替换为gulp-concat-sourcemap
以保留源地图。
gulp-sourcema目前不支持Gulp-concat(参见README)。
在修复之前,有一个修补版本可以在这里抓取:https://github.com/floridoo/gulp-concat/tree/sourcemap_pipe2
gulp.task('less', function () {
gulp.src(sources.less)
.pipe(sourcemaps.init())
.pipe(less())
.pipe(prefix({ map: true }))
.pipe(concat('build.css'))
.pipe(sourcemaps.write()
.pipe(gulp.dest(dirs.build + 'assets/css'));
});
答案 1 :(得分:3)
从Less版本2开始,您可以使用Less编译器的插件。 gulp-less也允许你使用这些插件(程序化)另见http://lesscss.org/usage/#plugins-using-a-plugin-in-code
gulp-less的文档描述了如何在https://github.com/plus3network/gulp-less#plugins使用clean-css和autoprefix插件。请注意,gulp-minify-css也在利用clean-css的代码。
在https://github.com/plus3network/gulp-less#source-maps
中已经描述了使用gulp-less和gulp-sourcemaps创建源图的方法。所以你应该可以使用:
var LessPluginCleanCSS = require("less-plugin-clean-css"),
cleancss = new LessPluginCleanCSS({advanced: true});
var LessPluginAutoPrefix = require('less-plugin-autoprefix'),
autoprefix= new LessPluginAutoPrefix({browsers: ["last 2 versions"]});
gulp.src('./less/**/*.less')
.pipe(sourcemaps.init())
.pipe(less({
plugins: [autoprefix, cleancss]
}))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('./public/css'));
以上内容应该生成您的Less源的autoprefixed和minified CSS,并将CSS源图写入./public/css/maps
或者您可以考虑使用Pleeease plugin Pleeease可以运行一次后处理器,请参阅http://pleeease.io/docs/#features