mirror of
https://github.com/owncast/owncast.git
synced 2024-10-10 19:16:02 +00:00
![dependabot[bot]](/assets/img/avatar_default.png)
* Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript (#265) * Trying a new github workflow to install javascript packages * Bump tailwindcss from 1.9.2 to 1.9.4 in /build/javascript (#266) Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 1.9.2 to 1.9.4. - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v1.9.2...v1.9.4) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript Bumps [preact](https://github.com/preactjs/preact) from 10.5.4 to 10.5.5. - [Release notes](https://github.com/preactjs/preact/releases) - [Commits](https://github.com/preactjs/preact/compare/10.5.4...10.5.5) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Owncast <owncast@owncast.online> * Bump @justinribeiro/lite-youtube in /build/javascript Bumps [@justinribeiro/lite-youtube](https://github.com/justinribeiro/lite-youtube) from 0.9.0 to 0.9.1. - [Release notes](https://github.com/justinribeiro/lite-youtube/releases) - [Commits](https://github.com/justinribeiro/lite-youtube/commits) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com>
139 lines
2.9 KiB
Markdown
139 lines
2.9 KiB
Markdown
# PostCSS JS [![Build Status][ci-img]][ci]
|
||
|
||
<img align="right" width="95" height="95"
|
||
title="Philosopher’s stone, logo of PostCSS"
|
||
src="http://postcss.github.io/postcss/logo.svg">
|
||
|
||
[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.
|
||
|
||
[postcss-write-svg]: https://github.com/jonathantneal/postcss-write-svg
|
||
[Stylelint]: https://github.com/stylelint/stylelint
|
||
[PostCSS]: https://github.com/postcss/postcss
|
||
[RTLCSS]: https://github.com/MohammadYounes/rtlcss
|
||
[ci-img]: https://travis-ci.org/postcss/postcss-js.svg
|
||
[ci]: https://travis-ci.org/postcss/postcss-js
|
||
|
||
## Usage
|
||
|
||
### Installation
|
||
|
||
```sh
|
||
npm i postcss-js
|
||
```
|
||
|
||
### Processing
|
||
|
||
```js
|
||
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
|
||
|
||
```js
|
||
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
|
||
|
||
```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:
|
||
|
||
```js
|
||
{
|
||
'@media screen': {
|
||
'&:hover': {
|
||
top: 10
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
This methods use Custom Syntax name convention, so you can use it like this:
|
||
|
||
```js
|
||
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](https://github.com/webpack/json-loader) to import data.
|
||
|
||
So, please install this loader and add to webpack config:
|
||
|
||
```js
|
||
loaders: [
|
||
{
|
||
test: /\.json$/,
|
||
loader: "json-loader"
|
||
}
|
||
]
|
||
```
|