我在我的项目中设置了gulpfile.js
。除了生成源映射之外,它的工作效果非常好,特别是对于它编译为LESS
的{{1}}文件。
我已经整理了一个gist,其中包含了我的gulp设置中的所有文件。请注意,除了gulp file.js本身之外,所有其他文件都在名为CSS
的目录中。
我遇到的问题是
tasks
文件,因此生成的源映射无效。为了补偿,我添加了在开发过程中添加供应商前缀的mixins,我必须禁用它们进行开发并为生产环境启用autoprefixer。如果有人能帮助我构建我的gulp file.js以更有效,更有效地工作,我将不胜感激。
同样,我的CSS
和相关任务都在此gist。
答案 0 :(得分:3)
我不得不在开发中禁用autoprefixer,因为正在生成的源地图
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编译器生成的源映射,请参阅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/'))
});
请注意,在大多数情况下,您只会缩小生产代码。不必缩小开发代码,其中包含源地图。
从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