【问题标题】:Gulp: How to use Browsersync, Sourcemaps, Autoprefixer and CSS Cleaner together?Gulp:如何一起使用 Browsersync、Sourcemaps、Autoprefixer 和 CSS Cleaner?
【发布时间】:2016-07-02 22:50:34
【问题描述】:

见下文。我当前代码遇到的问题是 Sourcemap 没有通过 Browsersync 注入。我在这里遗漏了什么还是做错了?

供参考: https://www.browsersync.io/docs/gulp/#gulp-sass-maps

// requirements
var gulp         = require('gulp');
var sass         = require('gulp-ruby-sass');
var browserSync  = require('browser-sync').create();
var prefix       = require('gulp-autoprefixer');
var rename       = require('gulp-rename');
var sourcemaps   = require('gulp-sourcemaps');
var cssclean     = require('gulp-clean-css');

// create sass tasks
gulp.task('sass', function() {
  return sass('assets/scss/style.scss', {sourcemap: true, style: 'compact'})
    .on('error', function (err) {
        console.error('Error!', err.message);
    })
    .pipe(rename({suffix: '.min'}))
    .pipe(cssclean())
    .pipe(prefix("last 2 versions", "> 1%", "ie 8", "Android 2", "Firefox ESR"))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('assets/styles'))
    .pipe(browserSync.stream({match: '**/*.css'}))
});

gulp.task('serve', ['sass'], function() {

  browserSync.init({
    proxy: "localhost/portfolio2014",
    open:false
  });

  gulp.watch("assets/scss/**/*.scss", ['sass']);
  gulp.watch(["assets/styles/*.css", "site/**/*", "content/**/*", "assets/javascript/*.js"]).on('change', browserSync.reload);
});

// default task (just run gulp)
gulp.task('default', ['serve'] );

【问题讨论】:

    标签: sass gulp browser-sync autoprefixer


    【解决方案1】:

    你必须使用gulp-ruby-sass吗?下面的 gulpfile.js 使用 gulp-sass 添加 sourcemaps 并在使用 sourcemaps 保存 .scss 文件时更新浏览器。

            var gulp = require('gulp');
            var sass = require('gulp-sass');
            var browserSync = require('browser-sync').create();
            var prefix = require('gulp-autoprefixer');
            var rename = require('gulp-rename');
            var sourcemaps = require('gulp-sourcemaps');
            var cssclean = require('gulp-clean-css');
    
            // create sass tasks
            gulp.task('sass', function () {
                return gulp.src('assets/scss/test.scss')
                    .pipe(sourcemaps.init())
                    .pipe(sass())
                    .pipe(rename({ suffix: '.min' }))
                    .pipe(cssclean())
                    .pipe(prefix("last 2 versions", "> 1%", "ie 8", "Android 2", "Firefox ESR"))
                    .pipe(sourcemaps.write(''))
                    .pipe(gulp.dest('assets/styles'))
                    .pipe(browserSync.stream({ match: '**/*.css' }))
                    .on('error', function (err) {
                        console.error('Error!', err.message);
                    });
            });
    
            gulp.task('serve', ['sass'], function () {
    
                browserSync.init({
                    proxy: "localhost/portfolio2014",
                    open: false
                });
    
                gulp.watch("assets/scss/**/*.scss", ['sass']);
                gulp.watch(["assets/styles/*.css", "assets/javascript/*.js"]).on('change', browserSync.reload);
            });
    
            // default task (just run gulp)
            gulp.task('default', ['serve']);
    

    【讨论】:

    • 感谢您的帮助。奇怪的是,我自己的答案现在似乎有效,但不是这个。我将不得不更多地研究它,看看我能想出什么。不过你肯定帮了忙,谢谢!
    • 很高兴我能帮上忙。上面的代码是你和我用来测试它的代码的混合体——我不得不为 browserSync 启动一个server 并更改了一些文件名,这可能是它没有立即工作的原因。跨度>
    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多