saqqdy/rollup-plugin-require-css(新しいタブで開きます)
主要言語: TypeScript
A powerful rollup plugin for importing CSS with CSS Modules, preprocessors, and more
- star 数
- 2
- watcher 数
- 1
- fork 数
- 0
- issue 数
- 5
- 最終更新
- 2026/05/12
主要言語: TypeScript
A powerful rollup plugin for importing CSS with CSS Modules, preprocessors, and more
A powerful rollup plugin for importing CSS with CSS Modules, preprocessors, and more
Try examples directly in your browser:
| Example | CodeSandbox | StackBlitz |
|---|---|---|
| basic | Open → | Open → |
| css-modules | Open → | Open → |
| preprocessors | Open → | Open → |
| postcss | Open → | Open → |
| code-splitting | Open → | Open → |
| shadow-dom | Open → | Open → |
See examples/ for more details.
# use pnpm $ pnpm install -D rollup-plugin-require-css # use npm $ npm install -D rollup-plugin-require-css # use yarn $ yarn add -D rollup-plugin-require-css
// rollup.config.js import requireCSS from 'rollup-plugin-require-css' export default { plugins: [ requireCSS({ output: 'style.css', minify: true }) ] }
// Auto-detect .module.css files import styles from './button.module.css' console.log(styles.button) // "_button_x5f2a" // Or force enable for all CSS requireCSS({ modules: true })
// Install the preprocessor first // pnpm add -D sass import './styles.scss' import './theme.less' import './base.styl' // In rollup.config.js requireCSS({ preprocessor: { sass: { includePaths: ['src/styles'] }, less: { paths: ['src/styles'] }, stylus: { paths: ['src/styles'] } } })
// Install postcss and plugins // pnpm add -D postcss autoprefixer requireCSS({ postcss: { enabled: true, plugins: [ require('autoprefixer')() ] } })
requireCSS({ sourcemap: true, // Generate inline source map sourcemap: 'inline', // Inline source map sourcemap: 'external' // External .css.map file })
export default { input: ['src/a.js', 'src/b.js'], output: { dir: 'dist', format: 'es' }, plugins: [ requireCSS({ split: true, // Generate separate CSS per entry output: (chunk) => `${chunk.name}.css` }) ] }
import styles from './component.css' assert { type: 'css' } class MyElement extends HTMLElement { constructor() { super() const shadow = this.attachShadow({ mode: 'open' }) shadow.adoptedStyleSheets = [styles] } }
string | ((chunk: OutputInfo) => string)CSS output file name or a function that returns the file name.
booleanfalseInject CSS into the bundle or extract to a separate file.
boolean | MinifyOptionsfalseEnable CSS minification with optional fine-grained control:
requireCSS({ minify: { removeComments: true, collapseWhitespace: true, removeRedundantValues: true, mergeRules: false, optimizeSelectors: false } })
boolean | CSSModulesOptions{ enabled: 'auto' }Enable CSS Modules:
requireCSS({ modules: { enabled: true, // or 'auto' generateScopedName: (name, filename, css) => `_${name}_${hash(css)}`, globalModulePaths: [/global\.css$/] } })
PostCSSOptionsConfigure PostCSS integration:
requireCSS({ postcss: { enabled: true, plugins: [require('autoprefixer')()], options: {} } })
PreprocessorOptionsConfigure preprocessor support:
requireCSS({ preprocessor: { sass: { includePaths: ['src'] }, less: { paths: ['src'] }, stylus: { paths: ['src'] } } })
boolean | 'inline' | 'external'falseGenerate source maps for CSS.
booleanfalseEnable CSS code splitting for multiple entry points.
booleanfalseEnable Hot Module Replacement support.
boolean | CacheOptionsfalseEnable caching for faster rebuilds:
requireCSS({ cache: { enabled: true, dir: '.cache/css', ttl: 3600000 // 1 hour } })
(code: string, id: string) => string | Promise<string>Custom transform function for CSS processing.
(css: string, chunk: OutputInfo) => voidCallback when CSS is extracted.
Access plugin internals through the api property:
const plugin = requireCSS() // Get all collected styles plugin.api.getStyles() // Get CSS Modules class mappings plugin.api.getCSSModules() // Get specific class name plugin.api.getClassName('/path/to/file.css', 'button') // Get statistics plugin.api.getStats() // Clear cache plugin.api.clearCache()
Please open an issue here.