我不得不在开发中禁用自动前缀,因为正在生成源映射
https://www.npmjs.com/package/gulp-autoprefixer 的文档描述了如何将 autoprefixer 与 gulp-sourcemaps 一起使用:
gulp.task('default', function () {
return gulp.src('src/**/*.css')
.pipe(sourcemaps.init())
.pipe(autoprefixer())
.pipe(concat('all.css'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist'));
});
以上为 all.css 创建了一个新的源映射。所以应该先加载less编译器生成的sourcemap,见https://github.com/floridoo/gulp-sourcemaps#load-existing-source-maps
gulp-minify-css 的文档没有描述这种用法,但您可以这样做:
gulp.task('minify-css', function() {
gulp.src('./static/css/*.css')
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(minifyCSS({keepBreaks:true}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./dist/'))
});
请注意,在大多数情况下,您只会缩小生产代码。具有源映射的开发代码不应该被缩小。
自第 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 源的自动前缀和缩小的 CSS,CSS 源映射写入 ./public/css/maps