92 lines
3.1 KiB
Markdown
92 lines
3.1 KiB
Markdown
PostCSS JSX Syntax
|
||
====
|
||
|
||
[](https://www.npmjs.com/package/postcss-jsx)
|
||
[](https://travis-ci.org/gucong3000/postcss-jsx)
|
||
[](https://travis-ci.org/gucong3000/postcss-syntaxes)
|
||
[](https://codecov.io/gh/gucong3000/postcss-jsx)
|
||
[](https://david-dm.org/gucong3000/postcss-jsx)
|
||
|
||
<img align="right" width="95" height="95"
|
||
title="Philosopher’s stone, logo of PostCSS"
|
||
src="http://postcss.github.io/postcss/logo.svg">
|
||
|
||
[PostCSS](https://github.com/postcss/postcss) syntax for parsing [CSS in JS](https://github.com/MicheleBertoli/css-in-js) literals:
|
||
|
||
- [aphrodite](https://github.com/Khan/aphrodite)
|
||
- [astroturf](https://github.com/4Catalyzer/astroturf)
|
||
- [csjs](https://github.com/rtsao/csjs)
|
||
- [css-light](https://github.com/streamich/css-light)
|
||
- [cssobj](https://github.com/cssobj/cssobj)
|
||
- [electron-css](https://github.com/azukaar/electron-css)
|
||
- [emotion](https://github.com/emotion-js/emotion)
|
||
- [freestyler](https://github.com/streamich/freestyler)
|
||
- [glamor](https://github.com/threepointone/glamor)
|
||
- [glamorous](https://github.com/paypal/glamorous)
|
||
- [j2c](https://github.com/j2css/j2c)
|
||
- [linaria](https://github.com/callstack/linaria)
|
||
- [lit-css](https://github.com/bashmish/lit-css)
|
||
- [react-native](https://github.com/necolas/react-native-web)
|
||
- [react-style](https://github.com/js-next/react-style)
|
||
- [reactcss](https://github.com/casesandberg/reactcss)
|
||
- [styled-components](https://github.com/styled-components/styled-components)
|
||
- [styletron-react](https://github.com/rtsao/styletron)
|
||
- [styling](https://github.com/andreypopp/styling)
|
||
- [typestyle](https://github.com/typestyle/typestyle)
|
||
|
||
## Getting Started
|
||
|
||
First thing's first, install the module:
|
||
|
||
```
|
||
npm install postcss-syntax postcss-jsx --save-dev
|
||
```
|
||
|
||
## Use Cases
|
||
|
||
```js
|
||
const postcss = require('postcss');
|
||
const stylelint = require('stylelint');
|
||
const syntax = require('postcss-syntax');
|
||
postcss([stylelint({ fix: true })]).process(source, { syntax: syntax }).then(function (result) {
|
||
// An alias for the result.css property. Use it with syntaxes that generate non-CSS output.
|
||
result.content
|
||
});
|
||
```
|
||
|
||
input:
|
||
```javascript
|
||
import glm from 'glamorous';
|
||
const Component1 = glm.a({
|
||
flexDirectionn: 'row',
|
||
display: 'inline-block',
|
||
color: '#fff',
|
||
});
|
||
```
|
||
|
||
output:
|
||
```javascript
|
||
import glm from 'glamorous';
|
||
const Component1 = glm.a({
|
||
color: '#fff',
|
||
display: 'inline-block',
|
||
flexDirectionn: 'row',
|
||
});
|
||
```
|
||
|
||
## Advanced Use Cases
|
||
|
||
Add support for more `css-in-js` package:
|
||
```js
|
||
const syntax = require('postcss-syntax')({
|
||
"i-css": (index, namespace) => namespace[index + 1] === "addStyles",
|
||
"styled-components": true,
|
||
});
|
||
```
|
||
|
||
See: [postcss-syntax](https://github.com/gucong3000/postcss-syntax)
|
||
|
||
## Style Transformations
|
||
|
||
The main use case of this plugin is to apply PostCSS transformations to CSS code in template literals & styles as object literals.
|