Use PostCSS with styled-jsx 💥
Companies and individuals who sponsored some work on this library:
Install this package first.
npm install --save styled-jsx-plugin-postcss
Next, add styled-jsx-plugin-postcss
to the styled-jsx
's plugins
in your
babel configuration:
{
"plugins": [
["styled-jsx/babel", { "plugins": ["styled-jsx-plugin-postcss"] }]
]
}
With config:
{
"plugins": [
[
"styled-jsx/babel",
{
"plugins": [
[
"styled-jsx-plugin-postcss",
{
"path": "[PATH_PREFIX]/postcss.config.js",
"compileEnv": "worker"
}
]
]
}
]
]
}
When using Node.js v12.3.0 and above the plugin defaults to compiling using a worker thread instead of a child process. This results in faster builds.
If for any reason you want to force compiling using a child process (slower) you can register the plugin with the config option compileEnv
set to process
.
Usage with Create React App requires you to either eject or use react-app-rewired.
Here is an example using react-app-rewired
:
// config-overrides.js
// this file overrides the CRA webpack.config
const { getBabelLoader } = require("react-app-rewired");
module.exports = function override(config, env) {
const loader = getBabelLoader(config.module.rules);
// Older versions of webpack have `plugins` on `loader.query` instead of `loader.options`.
const options = loader.options || loader.query;
options.plugins = [
[
"styled-jsx/babel",
{
plugins: ["styled-jsx-plugin-postcss"],
},
],
].concat(options.plugins || []);
return config;
};
Note: Please follow their instructions on how to set up build & test scripts, and make sure you have a correctly formatted postcss.config.js
as well.
styled-jsx-plugin-postcss
uses styled-jsx
's plugin system which is supported
from version 2. Read more on their repository for further info.
styled-jsx-plugin-postcss
uses
postcss-load-config
therefore you may want to refer to their docs to learn more about
adding plugins.
PRs and contributions are welcome!
We aim to drive development of this plugin through community contributions.
MIT