UNPKG

babel-plugin-transform-scss

Version:

Babel plugin for transpile scss or sass imports to css and embedding them in the head of the document

97 lines (77 loc) 1.81 kB
# babel-plugin-transform-scss Babel plugin for converting scss or sass imports to css and embedding them in the head of the document This plugin completely replaces the standard webpack sass-loader. This part of code can be removed: ```javascript module: { rules: [ //rules { test: /\.s[ac]ss$/i, use: ['style-loader', 'css-loader', 'sass-loader'] } ] } ``` ### Installation `npm install --save-dev babel-plugin-transform-scss` or `yarn add -D babel-plugin-transform-scss` Use it in your config file: ```json { "presets": [], "plugins": [ "babel-plugin-transform-scss" ] } ``` ### How it works This plugin looks for import of `sass` or `scss` files, when imports are found - imported files replaces with function which renders pure css to the head of the document. ```javascript import React from 'react' import 'style.scss' const Button = () => { return ( <div className="button"> Custom button </div> ) } export default Button ``` `import "style.scss"` will be transpiled to css and will be rendered to the `head` of the `document`: ```html <style data-scss-component="Button_style"> .button { display: flex; justify-content: space-around; } </style> ``` if import contains more than one styles: ##### Input ```javascript import React from 'react' import 'style.scss' import 'style2.scss' const Button = () => { return ( <div className="button"> <div className="nested-from-style2">Nested</div> </div> ) } export default Button ``` ##### Output ```html <style data-scss-component="Button_style"> .button { display: flex; justify-content: space-around; } </style> <style data-scss-component="Button_style2"> .nested-from-style2 { display: grid; } </style> ```