A PostCSS and stylelint custom syntax for parsing CSS inside styled-components templates.
For example:
const Div = styled.div`
color: hotpink;
`;
npm i -D postcss-styled-components
In your postcss.config.js
:
module.exports = {
syntax: 'postcss-styled-components',
plugins: [...]
};
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).
In your .stylelintrc.json
(or other stylelint config file):
{
"customSyntax": "postcss-styled-components"
}
Or with the CLI:
stylelint --custom-syntax postcss-styled-components
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"]
}