43081j / postcss-styled-components

A custom postcss syntax for styled-components support
13 stars 0 forks source link

postcss-styled-components

A PostCSS and stylelint custom syntax for parsing CSS inside styled-components templates.

For example:

const Div = styled.div`
  color: hotpink;
`;

Install

npm i -D postcss-styled-components

Usage with PostCSS

In your postcss.config.js:

module.exports = {
  syntax: 'postcss-styled-components',
  plugins: [...]
};

PostCSS with webpack

If you use webpack to execute postcss, you must ensure the right order of loaders, like so:

module.exports = {
  entry: './src/my-element.ts',
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: ['postcss-loader', 'ts-loader'],
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: ['.ts']
  },
  output: {
    filename: 'bundle.js'
  }
};

This is important as postcss will transform your CSS before typescript transpiles to JS (which is what you want to happen).

Usage with stylelint

In your .stylelintrc.json (or other stylelint config file):

{
  "customSyntax": "postcss-styled-components"
}

Or with the CLI:

stylelint --custom-syntax postcss-styled-components

Usage with vscode-stylelint

In order to make the vscode-stylelint extension work with this syntax correctly, you must configure it to validate JS and/or TypeScript files.

You can do this by following these instructions.

For example:

{
  "stylelint.validate": ["css", "javascript", "typescript"]
}