gulp postcss:条件选项(优化)
我学习了:它包括gulp postcss:条件选项(优化),gulp,postcss,cssnano,Gulp,Postcss,Cssnano,我学习了:它包括autoprefixer(非默认值),cssnano util原始缓存,等等 接下来我看一下:它有以下示例: var postcss = require('gulp-postcss'); var gulp = require('gulp'); var autoprefixer = require('autoprefixer'); var cssnano = require('cssnano'); gulp.task('css', function () { var pl
autoprefixer
(非默认值),cssnano util原始缓存
,等等
接下来我看一下:它有以下示例:
var postcss = require('gulp-postcss');
var gulp = require('gulp');
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
gulp.task('css', function () {
var plugins = [
autoprefixer({browsers: ['last 1 version']}),
cssnano()
];
return gulp.src('./src/*.css')
.pipe(postcss(plugins))
.pipe(gulp.dest('./dest'));
});
虽然有人说,autoprefixer
是cssnano
优化之一,但在上面的示例中,它是单独定义的。然而,我无法从上面的示例中理解如何从第一个链接(cssnano优化列表)设置所需的优化
例如。我想在开发和生产版本中都使用postsss-calc
,但是我只需要在生产版本中使用postsss-normalize-whitespace
。我应该如何完成下面的代码
const gulp = require('gulp'),
gulpIf = require('gulp-if'),
sass = require('gulp-sass'),
postcss = require('gulp-postcss');
const isDevelopment = !process.env.NODE_ENV || process.env.NODE_ENV === 'develpment';
gulp.task('styles', function(){
// first the optimizations for both Development and production
let plugins = [
autoprefixer({ browsers: ['>= 1%', 'last 5 major versions', 'ie >= 6']}),
// ...
];
if (isDevelopment) {
plugins.push(/* plugins for development build */);
}
else {
plugins.push(/* plugins for production build */);
}
return gulp.src(HPath.sassSourceFilesSelection)
.pipe(gulpIf(isDevelopment, sourcemaps.init()))
.pipe(sass())
.pipe(postcss(plugins))
// ...
});
你最后有没有想出一个好办法来处理这件事?@Ian,是的。示例:
!选择。发展?require('postss-normalize-whitespace')():false
Hmm,这与插件数组有什么关系?@Ian,我用代码示例添加了答案。啊,我明白了,你在用布尔结果过滤插件数组。谢谢。@lan,一点也不^这不是我自己的解决方案,我不记得是从哪里得到答案的,可能是在GitHub上(目前有500多个发布关闭了postcss)。
let PostCssPlugins = [
// non-conditional
require('cssnano-util-raw-cache')(),
// conditional
!options.isDevelopment ? require('postcss-normalize-whitespace')() : false
].filter(Boolean);
return gulp.src(sassFilesSelection)
.pipe(plugins.sass())
.pipe(plugins.postcss(PostCssPlugins))
.pipe(gulp.dest(outputPath));