PostCSS

PostCSS 一种用javascript编写的css解析器,利用parser转换为css tree及用stringifiercss tree 装换 value的过程。

基本原理:

基本原理

主要包含四个属性:

  • raws: 包含一些节点的辅助信息
  • type: 节点类型(root, atrule, rule, decl, or comment)
  • nodes: 子节点
  • source: 输入信息

同步API

var root  = postcss.parse(css, { from: 'a.css' });
root.source.input.from //=> '/home/ai/a.css'

异步API

var fs = require('fs');
var css = fs.readFileSync('./src/app.css', 'utf-8');

postcss([ require('autoprefixer'), require('cssnano') ])
    .process(css, {
        map: { inline: false }, // envoke map init
        from: 'src/app.css',
        to: 'app.css' })
    .then(function (result) {
        fs.writeFileSync('app.css', result.css);
        if ( result.map ) {
            fs.writeFileSync('app.css.map', result.map);
        }
    });

// 同步API
postcss([autoprefixer, cssnext]).process(css).css;

// 异步API
postcss([autoprefixer, cssnext])
    .preocess(css, {
        from: 'src/app.css',
        to: 'app.css'
    })
    .then(function(result){
        result.css
    })

其他:

上面的解释可以发现,postcss并不是一个Preprocessors(Sass、Less),因为Preprocessors需要开发人员去学习相应的语法,比如sass里面的变量及mixin等语法,也可以直接书写在scss文件里面。而它却不是。