2016-10-17 1 views
3

L'erreur provient du plugin postcss, je pense que je l'ai peut-être mal écrit. J'essaie d'ajouter cssnano et autoprefixer au plugin postcss.PostCSS erreur: [objet objet] n'est pas un plugin PostCSS

gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:143 
     throw new Error(i + ' is not a PostCSS plugin'); 
     ^

Error: [object Object] is not a PostCSS plugin 
    at Processor.normalize (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:143:15) 
    at new Processor (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/processor.js:51:25) 
    at postcss (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/node_modules/postcss/lib/postcss.js:73:10) 
    at Transform.stream._transform (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-postcss/index.js:47:5) 
    at Transform._read (_stream_transform.js:167:10) 
    at Transform._write (_stream_transform.js:155:12) 
    at doWrite (_stream_writable.js:300:12) 
    at writeOrBuffer (_stream_writable.js:286:5) 
    at Transform.Writable.write (_stream_writable.js:214:11) 
    at DestroyableTransform.ondata (/Applications/XAMPP/xamppfiles/htdocs/sites/gulp/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:531:20) 
Mac-a45e60e72dad:gulp JoeKonst$ 

Mon code:

// Dependancies 
var gulp = require('gulp'), 
    browserSync = require('browser-sync'), 
    plumber = require('gulp-plumber'), 
    autoprefixer = require('gulp-autoprefixer'), 
    uglify = require('gulp-uglify'), 
    compass = require('gulp-compass'), 
    rename = require('gulp-rename'), 
    nano = require('cssnano'), 
    del = require('del'), 
    postcss = require('gulp-postcss'), 
    sass = require('gulp-sass'); 

// Styles 
gulp.task('styles', function(){ 
    gulp.src('sass/main.scss') 
    .pipe(sass()) 
    .pipe(postcss([autoprefixer({browsers: ['last 2 versions']}), nano()])) 
    .pipe(gulp.dest('css/')); 

    gulp.watch('sass/**/*.scss', ['styles']); 
}); 

// Tasks 
gulp.task('default', ['styles']); 

Répondre

10

Vous utilisez le package gulp-autoprefixer. C'est simplement un emballage autour du paquet autoprefixer original qui le transforme en un plugin de gulp, ainsi vous pouvez faire .pipe(autoprefixer()).

Cependant postcss attend le package d'origine lui-même, pas le plugin gulp.

Ainsi, au lieu de cela:

autoprefixer = require('gulp-autoprefixer'), 

Vous devez installer le package autoprefixer et faire:

autoprefixer = require('autoprefixer'), 
+0

eu le même problème aussi avec gulp-cssnano - il aussi ne peut pas être utilisé comme PostCSS brancher. A dû exiger et utiliser le "cssnano" à la place "gulp-cssnano". Visuellement, il ressemble presque à la même chose et comme un débutant Gulp je dois dire qu'il est ez à négliger. –

+0

avantage supplémentaire: maintenant vous pouvez "soudainement" utiliser des paramètres dans votre autoprefixer: '.pipe (postcss ([autoprefixer ({navigateurs: ['iOS ...']})]))' –