Function Approach to CSS Loader (with Webpack)
This project uses node and npm.
$ npm install classnames-loader
$ # OR
$ yarn add classnames-loader
{
module: {
rules: [
{
test: /\.(scss|css)$/,
use: [
... // other loaders (ex. style loader)
{
loader: 'classnames-loader', // Insert classnames-loader right before css-loader
},
{
loader: 'css-loader', // Translates CSS into CommonJS
options: {
modules: true, // Enable/Disable CSS Modules and setup mode
// Note: localIdentName option is also supported
},
},
... // other loaders (ex. sass-loader)
]
}
}
}
.foo { color: red; }
.bar { color: green; }
.bar.active { color: blue; }
import styles from './styles.css' // import styles file
console.log(styles.foo) // foo
console.log(styles('foo')) // foo
console.log(styles('foo', { bar: false })) // foo
console.log(styles('foo', { bar: false, active: true })) // foo active
console.log(styles('foo', { bar: false}, { active:true })) // foo active
console.log(styles('foo', { bar: false}, { active:true })) // foo active
console.log(styles('foo', () => 'bar', { active:() => true })) // foo bar active
console.log(styles('foo', null, undefined, '', [])) // foo
ISC