css-modules-types-loader
v0.7.1
Published
A webpack loader that dynamically generates TypeScript typings for CSS modules from css-loader.
Maintainers
Readme
css-modules-types-loader
A webpack loader that dynamically generates TypeScript typings for CSS modules from css-loader.
Features
- Generate
*.d.tsfiles for CSS Modules automatically. - Supports both webpack and Rspack.
- Removes stale
*.d.tsfiles when the module no longer exports class names. - Optional banner and line-ending (
eol) customization.
Install
pnpm add -D css-modules-types-loader
# or
npm i -D css-modules-types-loader
# or
yarn add -D css-modules-types-loaderUsage
Webpack
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.module\.css$/,
use: [
'style-loader',
{
loader: 'css-modules-types-loader',
options: {
banner: '// This file is automatically generated.',
eol: '\n'
}
},
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
]
}
};Rspack
// rspack.config.js
module.exports = {
module: {
rules: [
{
test: /\.module\.css$/,
use: [
'style-loader',
{
loader: 'css-modules-types-loader/rspack',
options: {
banner: '// This file is automatically generated.',
eol: '\n'
}
},
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
]
}
};Options
| Option | Type | Default | Description |
| -------- | -------- | ----------- | -------------------------------------------------------- |
| banner | string | undefined | Adds a banner prefix to each generated *.d.ts file. |
| eol | string | "\\n" | Controls newline characters in generated *.d.ts files. |
How it works
- The loader reads css-loader's JavaScript module output.
- It parses exported class names and generates matching TypeScript declarations.
- If no styles are exported, the corresponding
*.d.tsfile is removed.
License
MIT
