【问题标题】:Gulp sourcemap with less/concat/autoprefixer/minifycss?Gulp sourcemap with less/concat/autoprefixer/minifycss?
【发布时间】:2014-08-22 12:56:15
【问题描述】:

是否可以生成包含所有这些转换的源映射?

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 似乎没有提及源地图。我运气不好?

【问题讨论】:

    标签: less concat gulp source-maps autoprefixer


    【解决方案1】:

    今晚我也遇到了同样的问题,我仍在努力寻找一个干净的解决方案。然而,我只是设法让一些工作,所以我想我会分享:

    注意:我既没有使用gulpif,也没有使用minify

    使用gulp-sourcemaps,因为gulp-less 似乎没有源映射选项(至少目前如此)。

    gulp-concat 替换为gulp-concat-sourcemap 以保留源映射。

    gulp-sourcemaps 目前不支持 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'));
    });
    

    【讨论】:

    • 快到了;你在做任何缩小吗?
    • 还没有,仅针对开发环境 ftm 执行此操作。任何提示请让我/我们知道!
    • 好点,也许我也应该放弃 dev 的缩小步骤。我不确定我是否需要在生产中使用源地图。
    • tx,现在好像支持 gulp-concat...
    • 感谢@memeLab 让我们知道,我已经更新了答案。
    【解决方案2】:

    自第 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

    或者您可以考虑使用Pleeease plugin Pleeease 可以一次运行多个后处理器,请参阅http://pleeease.io/docs/#features

    【讨论】:

    • 我在将 CSS 加载到 chrome 时发现,地图文件没有指向正确的代码行?
    • 默认情况下,您的 Less 代码已包含在源映射中,另请参阅 github.com/floridoo/gulp-sourcemaps#write-options 了解 includeContentsourceRoot 选项
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 2018-11-27
    • 2017-09-14
    • 2020-01-28
    • 2014-10-08
    • 2013-08-26
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多