【问题标题】:Autoprefixer doesnt work inside Gulpfile.jsAutoprefixer 在 Gulpfile.js 中不起作用
【发布时间】:2016-10-06 05:49:21
【问题描述】:

伙计们,我在我的 gulp 文件中添加了 Autoprefixer 插件一切正常,但 CSS 不会吐出 autoprefixed css。我很乐意得到帮助。下面是我的 gulpfile.js:

// require gulp
var gulp = require('gulp');

// require other packages
var concat = require('gulp-concat'),
    cssmin = require('gulp-minify-css'),
    rename = require("gulp-rename"),
    sass = require('gulp-sass'),
    browserSync = require('browser-sync'),
    uglify = require('gulp-uglify'),
    changed = require('gulp-changed'),
    imagemin = require('gulp-imagemin'),
    autoprefix = require('gulp-autoprefixer');

// scripts task
gulp.task('scripts', function() {
  return gulp.src('./src/js/*.js')
    .pipe(concat('app.js'))
    .pipe(gulp.dest('./dist/js/'))
    .pipe(uglify())
    .pipe(rename({
      suffix: '.min'
    }))
    .pipe(gulp.dest('./dist/js/'));
});

// styles task
gulp.task('styles', function() {
  return gulp.src('./src/sass/*.scss')
    .pipe(autoprefix('last 2 versions'))
    .pipe(sass())
    .pipe(gulp.dest('./dist/css/'))
    .pipe(cssmin())
    .pipe(rename({
      suffix: '.min'
    }))
    .pipe(gulp.dest('./dist/css/'));
});

// browser sync
gulp.task('browser-sync', ['styles'], function() {
    browserSync({
        server: {
            baseDir: ''
        },
        notify: false
    });
    gulp.watch("./src/sass/*.scss", ['scss']);
    gulp.watch("*.html").on('change', browserSync.reload);
});

// watch task
gulp.task('watch', function() {
  gulp.watch('./src/js/*.js', ['scripts']);
  gulp.watch('./src/sass/*.scss', ['styles']);
});

// image minification
gulp.task('imagemin', function() {
  var imgSrc = './src/img/**/*',
      imgDst = './dist/img';

  gulp.src(imgSrc)
    .pipe(changed(imgDst))
    .pipe(imagemin())
    .pipe(gulp.dest(imgDst));
});

gulp.task('default', ['scripts', 'styles', 'browser-sync', 'imagemin', 'watch']);

我希望你们能帮助我解决这个问题:)

【问题讨论】:

    标签: javascript html gulp


    【解决方案1】:

    传递给autoprefixerconfig 是错误的。应该是

    .pipe(autoprefix({
            browsers: ['last 2 versions']
        }))
    

    参考:gulp-autoprefixer

    【讨论】:

    • 按照建议进行了更改,但这仍然不是 Autoprefix :(
    【解决方案2】:

    在创建 css 后尝试初始化 autoprefixer。

    Autoprefixer 对 css 进行更改。它不适用于 sass 文件。


    更新

    在复制新的 gulpfile.js 之前,在项目路径中添加控制台 cmd

    npm install gulp-postcss autoprefixer es6-promise --save-dev
    

    然后使用 autoprefixer 复制新的 gulpfile.js 配置

    // require gulp
    var gulp = require('gulp');
    
    // require other packages
    var concat = require('gulp-concat'),
        cssmin = require('gulp-minify-css'),
        rename = require("gulp-rename"),
        sass = require('gulp-sass'),
        browserSync = require('browser-sync'),
        uglify = require('gulp-uglify'),
        changed = require('gulp-changed'),
        imagemin = require('gulp-imagemin');
       // autoprefix = require('gulp-autoprefixer'); -- comment this line
    
    // scripts task
    gulp.task('scripts', function() {
      return gulp.src('./src/js/*.js')
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./dist/js/'))
        .pipe(uglify())
        .pipe(rename({
          suffix: '.min'
        }))
        .pipe(gulp.dest('./dist/js/'));
    });
    
    // styles task
    gulp.task('styles', function() {
      return gulp.src('./src/sass/*.scss')
      //  .pipe(autoprefix('last 2 versions')) -- comment this line
        .pipe(sass())
        .pipe(gulp.dest('./dist/css/'))
        .pipe(cssmin())
        .pipe(rename({
          suffix: '.min'
        }))
        .pipe(gulp.dest('./dist/css/'));
    });
    
    // =========================================
    // Start - Add packages / new configurations
    
    require('es6-promise').polyfill();
    var postcss      = require('gulp-postcss');
    var autoprefixer = require('autoprefixer');
    
    gulp.task('autoprefixer', function () {
    
        return gulp.src(
              ['.dist/css/*.css', '!.dist/css/*.min.css']
          )
            .pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
            .pipe(gulp.dest('.dist/css/'));
    });
    
    // =========================================
    // End new lines
    
    // browser sync
    gulp.task('browser-sync', ['styles'], function() {
        browserSync({
            server: {
                baseDir: ''
            },
            notify: false
        });
        gulp.watch("./src/sass/*.scss", ['scss']);
        gulp.watch("*.html").on('change', browserSync.reload);
    });
    
    // watch task
    gulp.task('watch', function() {
      gulp.watch('./src/js/*.js', ['scripts']);
      gulp.watch('./src/sass/*.scss', ['styles']);
    });
    
    // image minification
    gulp.task('imagemin', function() {
      var imgSrc = './src/img/**/*',
          imgDst = './dist/img';
    
      gulp.src(imgSrc)
        .pipe(changed(imgDst))
        .pipe(imagemin())
        .pipe(gulp.dest(imgDst));
    });
    
    gulp.task('default', ['scripts', 'styles', 'browser-sync', 'imagemin', 'watch']);
    

    然后尝试在您的 cmd 控制台中写入

    gulp autoprefixer
    

    问候:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2020-06-20
      • 2019-06-27
      • 2016-11-08
      • 2022-07-21
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多