Vite plugin to add files to build.rollupOptions.input using fast-glob patterns.
- π¦ Vite 6 / 7 / 8 Compatible: Fully supports Vite 6, 7, and 8 (Rolldown-powered)
- π Fast Glob Integration: Uses fast-glob for efficient file pattern matching
- π·οΈ Smart Aliasing: Automatically generates meaningful entry names
- π Flexible Configuration: Support for complex directory structures
- π― TypeScript First: Built with TypeScript for better development experience
npm install -D vite-plugin-glob-input// vite.config.ts
import { defineConfig } from 'vite'
import globInput from 'vite-plugin-glob-input'
export default defineConfig({
plugins: [
globInput({
patterns: 'src/pages/**/*.html'
})
]
})// vite.config.ts
import { defineConfig } from 'vite'
import globInput from 'vite-plugin-glob-input'
export default defineConfig({
plugins: [
globInput({
patterns: ['src/pages/**/*.html', 'src/components/**/*.html'],
options: {
ignore: ['**/private/**', '**/_*'],
absolute: false
},
disableAlias: false,
homeAlias: 'main',
rootPrefix: 'page',
dirDelimiter: '-',
filePrefix: '_'
})
]
})| Option | Type | Default | Description |
|---|---|---|---|
patterns |
string | string[] |
- | Required. Glob patterns to match files |
options |
FastGlob.Options |
{} |
Options passed to fast-glob |
disableAlias |
boolean |
false |
Disable automatic alias generation |
homeAlias |
string |
'home' |
Alias name for index files in root |
rootPrefix |
string |
'root' |
Prefix for non-index files in root |
dirDelimiter |
string |
'-' |
Character to replace path separators |
filePrefix |
string |
'_' |
Prefix for non-index files |
The options field accepts any fast-glob options. Common options include:
ignore: Array of patterns to ignoredeep: Maximum depth of directory traversalonlyFiles: Return only files (default: true)case: Case sensitive matching
The plugin automatically generates entry aliases based on file paths:
| File Path | Generated Alias | Description |
|---|---|---|
src/index.html |
home |
Root index file |
src/about.html |
root_about |
Root non-index file |
src/blog/index.html |
blog |
Directory index file |
src/blog/post.html |
blog_post |
Directory non-index file |
globInput({
patterns: 'src/**/*.html',
homeAlias: 'main', // index.html β 'main'
rootPrefix: 'page', // about.html β 'page_about'
dirDelimiter: '__', // blog/post.html β 'blog__post'
filePrefix: '--' // blog/post.html β 'blog--post'
})// Generate entries for all pages
globInput({
patterns: 'src/pages/**/*.html',
options: {
ignore: ['**/templates/**', '**/_*']
}
})// Multiple entry points for different sections
globInput({
patterns: [
'src/admin/**/*.html',
'src/public/**/*.html'
]
})// Use file paths as-is
globInput({
patterns: 'src/**/*.html',
disableAlias: true
})- Vite: ^6.0.0 || ^7.0.0 || ^8.0.0
- Node.js: 20.x, 22.x
- TypeScript: 5.x
This project uses Vitest 4 for testing:
# Run tests
npm test
# Run tests with coverage
npm run coverage
# Run tests in watch mode
npm run test:watch# Build the package
npm run build
# Type check
npm run type-checkContributions are welcome! Please feel free to submit a Pull Request.
MIT License - see the LICENSE file for details.
- β¨ Vite 8 support (Rolldown-powered builds)
- β¨ Vitest 4 integration
- β¬οΈ Node.js 20+ required
- β¨ Vite 7 support
- β¨ Initial release
- π§ TypeScript configuration
- π Comprehensive documentation