styled-jsx-in-place
v1.0.0-beta.0
Published
Full CSS support for JSX without compromises
Downloads
12
Maintainers
Readme
styled-jsx-in-place
Fork of styled-jsx with some changes to apply styled-jsx plugins transforms in place.
This was created because current next 12 version doesn't support styled-jsx plugins.
With this tool you can get rid of styled-jsx plugins and update to next 12.
Getting started
First, install the package:
npm install --save-dev styled-jsx-in-place
or
yarn add --dev styled-jsx-in-place
Then, install @codemod/cli
:
npm install --global @codemod/cli
or
yarn global add @codemod/cli
Now execute this codemod:
codemod "{src,other-folder}/**/*.{js,jsx,ts,tsx}" --plugin node_modules/styled-jsx-in-place/babel.js --plugin-options '{ "plugins": [ [ "styled-jsx-plugin-postcss", { "path": "./postcss.config.js" } ] ] }'
If you were using one plugin to allow nesting, it will convert this code:
export default () => (
<div>
<p>only this <strong>word</strong> will get the style :)</p>
<style jsx>{`
p {
strong {
color: red;
}
}
`}</style>
</div>
)
to this:
export default () => (
<div>
<p>only this <strong>word</strong> will get the style :)</p>
<style jsx>{`
p strong {
color: red;
}
`}</style>
</div>
)
Tips
Prefixes generated by styled-jsx plugins (like autoprefixer postcss plugin) can be ignored. styled-jsx css parser stylis generates prefixes by default.
Run prettier after executing the codemod to clean code style of the generated code.
Lib it's not finished, please always manually review it's output. Current failing tests:
- mixed local and global styled-jsx tags in same file ( and in same file)
- some external styled-jsx cases (tagged template expressions like css
p { color: #000; }
or css.resolvep { color: #000; }
)