问题
The error is coming from the postcss
plugin, I think I may have written it incorrectly.
I'm trying to add cssnano
and autoprefixer
to the postcss
plugin.
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$
My 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']);
回答1:
You are using the gulp-autoprefixer package. That's simply a wrapper around the original autoprefixer package that turns it into a gulp plugin, so you can do .pipe(autoprefixer())
.
However postcss
expects the original package itself, not the gulp plugin.
So instead of this:
autoprefixer = require('gulp-autoprefixer'),
You need to install the autoprefixer
package and do this:
autoprefixer = require('autoprefixer'),
回答2:
@rizkit - I found the fix and it's simple. Just run npm i -d postcss
and the problem is solved.
Basically, you need both gulp-postcss
and postcss
plugins in your dependencies for this to work correctly. I'm assuming the gulp-postcss
plugin will need to update the postcss
package reference in the project to fix it properly, so we only need to include gulp-postcss
in the future.
回答3:
If you use autoprefixer 10
you might stumble upon that problem again, there is a github issue related to that with some links and explanations: https://github.com/postcss/autoprefixer/issues/1358
tl;dr:
- for
postcss-cli
andgulp-postcss
you have to wait for an update, forPostStylus
you might never get an update. - or add
postcss
as a devDependency
回答4:
Tailwindcss & React issue
For anyone facing the above issue while setting up a react project with tailwindcss, running npm i postcss -D
worked for me.
来源:https://stackoverflow.com/questions/40090111/postcss-error-object-object-is-not-a-postcss-plugin