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.
|