@snickbit/indexer
TypeScript icon, indicating that this package has built-in type declarations

2.10.1 • Public • Published

@snickbit/indexer

Simple cli tool to generate index files for almost any project.

Installation

pnpm add -g @snickbit/indexer
yarn global add @snickbit/indexer
npm install -g @snickbit/indexer

Usage

CLI Usage

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.

Config Options

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"
}

source

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.

output

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

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'

casing

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

ignore

Type: string[] \

Array of glob patterns to ignore.

include

Type: string[] \

Array of glob patterns to explicitly include. Overrides the ignore option.

Example:

 [
	"**/node_modules/**",
	"**/dist/**"
]

overrides

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"
	}
}

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

recursive

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.

indexes

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).

License

Copyright (c) 2022 - Nicholas Lowe aka Snickbit

MIT License

Dependencies (9)

Dev Dependencies (9)

Package Sidebar

Install

npm i @snickbit/indexer

Weekly Downloads

5

Version

2.10.1

License

MIT

Unpacked Size

25.8 kB

Total Files

7

Last publish

Collaborators

  • snickbit