gulp經常使用插件之gulp-postcss使用

更多gulp經常使用插件使用請訪問:gulp經常使用插件彙總css


** gulp-postcss**這是一款經過多個插件經過管道傳遞CSS,可是僅解析一次CSS。html

更多使用文檔請點擊訪問gulp-postcss工具官網git

安裝

一鍵安裝很少解釋github

npm install --save-dev gulp-postcss

使用

單獨安裝所需的postcss插件。例如,對於autoprefixer,您須要安裝autoprefixer軟件包。npm

基本用法gulp

postcss(options) 工具

  • options(參數) 類型:Array or null

配置是從自動加載postcss.config.js 這裏描述的,因此你沒必要指定任何選項。post

var postcss = require('gulp-postcss');
var gulp = require('gulp');

gulp.task('css', function () {
    return gulp.src('./src/*.css')
        .pipe(postcss())
        .pipe(gulp.dest('./dest'));
});

直接傳遞插件ui

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'));
});

將其餘選項傳遞給PostCSS gulp-postcss的第二個可選參數傳遞給PostCSS。 例如,這可用於啓用自定義解析器:spa

var gulp = require('gulp');
var postcss = require('gulp-postcss');
var nested = require('postcss-nested');
var sugarss = require('sugarss');

gulp.task('default', function () {
    var plugins = [nested];
    return gulp.src('in.sss')
        .pipe(postcss(plugins, { parser: sugarss }))
        .pipe(gulp.dest('out'));
});

使用自定義處理器

var postcss = require('gulp-postcss');
var cssnext = require('postcss-cssnext');
var opacity = function (css, opts) {
    css.eachDecl(function(decl) {
        if (decl.prop === 'opacity') {
            decl.parent.insertAfter(decl, {
                prop: '-ms-filter',
                value: '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + (parseFloat(decl.value) * 100) + ')"'
            });
        }
    });
};

gulp.task('css', function () {
    var plugins = [
        cssnext({browsers: ['last 1 version']}),
        opacity
    ];
    return gulp.src('./src/*.css')
        .pipe(postcss(plugins))
        .pipe(gulp.dest('./dest'));
});

源地圖支持

默認狀況下,源地圖是禁用的,以與gulp-sourcemaps一塊兒提取地圖。

return gulp.src('./src/*.css')
    .pipe(sourcemaps.init())
    .pipe(postcss(plugins))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('./dest'));

高級用法

若是要在每一個文件基礎上配置postcss,則能夠傳遞一個回調,該回調接收vinyl 文件對象並返回 { plugins: plugins, options: options }。例如,當您須要不一樣地解析不一樣的擴展名時:

var gulp = require('gulp');
var postcss = require('gulp-postcss');

gulp.task('css', function () {
    function callback(file) {
        return {
            plugins: [
                require('postcss-import')({ root: file.dirname }),
                require('postcss-modules')
            ],
            options: {
                parser: file.extname === '.sss' ? require('sugarss') : false
            }
        }
    }
    return gulp.src('./src/*.css')
        .pipe(postcss(callback))
        .pipe(gulp.dest('./dest'));
});

使用能夠實現相同的結果 postcss-load-config,由於它ctx與上下文選項和乙烯基文件一塊兒接收。

var gulp = require('gulp');
var postcss = require('gulp-postcss');

gulp.task('css', function () {
    var contextOptions = { modules: true };
    return gulp.src('./src/*.css')
        .pipe(postcss(contextOptions))
        .pipe(gulp.dest('./dest'));
});
module.exports = function (ctx) {
    var file = ctx.file;
    var options = ctx.options;
    return {
        parser: file.extname === '.sss' ? : 'sugarss' : false,
        plugins: {
           'postcss-import': { root: file.dirname }
           'postcss-modules': options.modules ? {} : false
        }
    }
})
相關文章
相關標籤/搜索