Simple cli tool to generate index files for almost any project.
pnpm add -g @snickbit/indexer
yarn global add @snickbit/indexer
npm install -g @snickbit/indexer
indexer [source] [--config|c=config/file/path.json] [--dry-run|d]
Once you have a config file, you can use the CLI to generate index files just by running indexer
in the same directory as the config file.
Indexer is configured by a "indexer.config.json" file or the "indexer" package.json property.
Starter config file for a library:
{
"source": "src/**/*.{js,jsx,ts,tsx}",
"output": "src/index.ts",
"type": "wildcard"
}
Type: string | string[]
Example: "src/**/*.{js,jsx,ts,tsx}"
Glob pattern(s) to match the source files.
Note: Generated index files are automatically excluded from the glob pattern. If you want to include a generated index in a parent index, use the include
property.
Type: string Example: "src/index.ts"
The index file to generate.
Note: It's recommended to output to a file inside the source directory, so that the index file can be committed and/or transpiled by any build tools.
Type: string Default: 'wildcard'
The type of exports to generate in the index file.
Options:
- default - Re-exports the default export of the source file(s) as a named export.
export {default as Factory} from './src/Factory.ts'
- wildcard - Re-exports all exports of the source file(s).
export * from './src/main.ts'
- group - Re-exports all exports of the source file(s) as a named export.
export * as Factory from './src/Factory.ts'
- slug - Re-exports all exports of the source file(s) as a slugged export.
export * as commands_my_command from './src/commands/my-command.ts'
Type: string
The casing of the exported name(s).
Options:
- keep - Maintains the casing of the file name, but removes non-variable characters.
- camel -
myCommand
- pascal -
MyCommand
- snake -
my_command
- lower -
mycommand
- upper -
MYCOMMAND
Type: string[] \
Array of glob patterns to ignore.
Type: string[] \
Array of glob patterns to explicitly include. Overrides the ignore
option.
Example:
[
"**/node_modules/**",
"**/dist/**"
]
Type: object
Overrides the type of exports for specific files or globs.
Example:
{
"source": "src/**/*.{js,jsx,ts,tsx}",
"output": "src/index.ts",
"type": "wildcard",
"overrides": {
"./src/commands/**/*.ts": "group",
"./src/models/*.ts": "default"
}
}
Type: object
Generate a default export for the index file.
Options:
- source - optional glob(s) specific to the default export.
- type - either 'default', 'group', or 'slug' export type
- overrides - optional overrides for the default export.
Example:
Config:
{
"source": "src/**/*.ts",
"output": "src/index.ts",
"type": "wildcard",
"default": {
"source": "src/factory.ts",
"type": "default"
}
}
Results:
// WARNING: This file is automatically generated. Any changes will be lost the next time the generator is run.
import {default as factory} from './factory'
export * from './MyClass'
export * from './config'
export * from './definitions'
export * from './factory'
export * from './helpers'
export default factory
Type: boolean
Default: false
Root only. Whether to recursively generate index files for subdirectories. Recursive indexes will always be named index.[ext]
and will be placed in the same directory as the source file.
Type: object[]
Array of indexer configurations. Use this to generate multiple index files. The root configuration will be used as a base and be merged with the other configuration(s).
Copyright (c) 2022 - Nicholas Lowe aka Snickbit