esbuild-style-loader
A style loader for esbuild, support for CSS, SCSS, LESS, Stylus, and CSS Modules.
Features
- <input checked="" disabled="" type="checkbox"> Zero configuration
- <input checked="" disabled="" type="checkbox"> Support for CSS Modules
- <input checked="" disabled="" type="checkbox"> Support for LESS
builtin
- <input checked="" disabled="" type="checkbox"> Support for CSS
- <input checked="" disabled="" type="checkbox"> Autoprefixer for CSS
- default:
ios >= 11, android >= 5, chrome >= 54
- default:
- <input checked="" disabled="" type="checkbox"> Support sourceMap
- <input checked="" disabled="" type="checkbox"> Fast compiler engine by lightningcss
Default behavior
The following rules enable css-modules
- The file name ends with
/.modules?\.(css|less|scss|sass|styl)/
- The file query contains
modules
ormodules=true
- Can be used with plugins esbuild-plugin-auto-css-modules
import styles from './style.css?modules';
import styles from './style.module.css';
import styles from './style.modules.css';
import styles from './style.less?modules';
import styles from './style.module.less';
import styles from './style.modules.less';
Normal CSS files are not treated as CSS Modules
import './style.css';
import './style.less';
import styles from './style.css';
import styles from './style.less';
Usage
import { build } from 'esbuild';
import { styleLoader } from 'esbuild-style-loader';
const buildOptions = {
plugins: [
styleLoader({
filter: /\.(css|less|scss|sass|tyss)(\?.*)?$/,
/**
* Process file results from other plugins namespace
*/
namespace: ['native-component', 'file'],
/**
* The browser setting for lightningcss
*/
browsers: 'ios >= 11, android >= 5, chrome >= 54',
cssModules: {
pattern: process.env.CI_TEST === 'test' ? '[name]__[local]' : '[local]__[hash]',
},
/**
* The public path for absolute paths in css
*/
publicPath: __dirname,
}),
],
};
if you want to use absolute paths, you can specify the publicPath
option
TODO
- <input disabled="" type="checkbox"> Support for Stylus
- <input disabled="" type="checkbox"> Support for Sass
- <input checked="" disabled="" type="checkbox"> sass
- <input disabled="" type="checkbox"> node-sass
- <input disabled="" type="checkbox"> sass-embedded