Home

Awesome

styled-jsx-plugin-postcss

Build Status npm

Use PostCSS with styled-jsx 💥

⚠️ This plugin is not actively being maintained. If you want me to work on it please consider donating.

Supporters

Companies and individuals who sponsored some work on this library:

🥇 @swissredcross

Usage

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"
            }
          ]
        ]
      }
    ]
  ]
}

compileEnv

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.

Example with CRA

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.

Notes

styled-jsx-plugin-postcss uses styled-jsx's plugin system which is supported from version 2. Read more on their repository for further info.

Plugins

styled-jsx-plugin-postcss uses postcss-load-config therefore you may want to refer to their docs to learn more about adding plugins.

Contributions

PRs and contributions are welcome!

We aim to drive development of this plugin through community contributions.

License

MIT