Syllabus/themes/piratecare/node_modules/postcss-js
Marcell Mars c832f9bfdb hugo stuff... 2020-03-05 05:10:52 +01:00
..
CHANGELOG.md hugo stuff... 2020-03-05 05:10:52 +01:00
LICENSE hugo stuff... 2020-03-05 05:10:52 +01:00
README.md hugo stuff... 2020-03-05 05:10:52 +01:00
async.js hugo stuff... 2020-03-05 05:10:52 +01:00
index.js hugo stuff... 2020-03-05 05:10:52 +01:00
objectifier.js hugo stuff... 2020-03-05 05:10:52 +01:00
package.json hugo stuff... 2020-03-05 05:10:52 +01:00
parser.js hugo stuff... 2020-03-05 05:10:52 +01:00
process-result.js hugo stuff... 2020-03-05 05:10:52 +01:00
sync.js hugo stuff... 2020-03-05 05:10:52 +01:00

README.md

PostCSS JS Build Status

PostCSS for React Inline Styles, Radium, JSS and other CSS-in-JS.

For example, to use Stylelint, RTLCSS or postcss-write-svg plugins in your workflow.

Usage

Installation

npm i postcss-js

Processing

const postcssJs = require('postcss-js')
const autoprefixer = require('autoprefixer')

const prefixer = postcssJs.sync([ autoprefixer ]);

const style = prefixer({
    userSelect: 'none'
});

style //=> {
      //     WebkitUserSelect: 'none',
      //        MozUserSelect: 'none',
      //         msUserSelect: 'none',
      //           userSelect: 'none'
      //   }

Compile CSS-in-JS to CSS

const postcss = require('postcss')
const postcssJs = require('postcss-js')

const style = {
    top: 10,
    '&:hover': {
        top: 5
    }
};

postcss().process(style, { parser: postcssJs }).then( (result) => {
    result.css //=> top: 10px;
               //   &:hover { top: 5px; }
})

Compile CSS to CSS-in-JS

const postcss = require('postcss')
const postcssJs = require('postcss-js')

const css  = '@media screen { z-index: 1 }'
const root = postcss.parse(css);

postcssJs.objectify(root) //=> { '@media screen': { zIndex: '1' } }

API

sync(plugins): function

Create PostCSS processor with simple API, but with only sync PostCSS plugins support.

Processor is just a function, which takes one style object and return other.

async(plugins): function

Same as sync, but also support async plugins.

Returned processor will return Promise.

parse(obj): Root

Parse CSS-in-JS style object to PostCSS Root instance.

It converts numbers to pixels and parses [Free Style] like selectors and at-rules:

{
    '@media screen': {
        '&:hover': {
            top: 10
        }
    }
}

This methods use Custom Syntax name convention, so you can use it like this:

postcss().process(obj, { parser: postcssJs })

objectify(root): object

Convert PostCSS Root instance to CSS-in-JS style object.

Troubleshoot

Webpack may need some extra config for some PostCSS plugins.

Module parse failed

Autoprefixer and some other plugins need a json-loader to import data.

So, please install this loader and add to webpack config:

loaders: [
    {
        test: /\.json$/,
        loader: "json-loader"
    }
]