npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@snickbit/indexer

v2.10.1

Published

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

Downloads

17

Readme

@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