Skip to content

@stephansama/auto-readme

Generate lists and tables for your README automagically based on your repository

Open Table of contents
Terminal window
pnpm install @stephansama/auto-readme

In order to run the script you need to do two things

  1. Create either a heading or a comment to enable the corresponding feature
  2. Run the following command:
Terminal window
pnpx @stephansama/auto-readme [options]

To turn on table of content enable the setting enableToc and add the following header

## Table of contents

To turn on the usage generator enable the setting enableUsage and add the following header

## Usage

To use the zod generator add the following comments

<!-- ZOD path="./path/to/zod.js" start -->
<!-- ZOD end -->

There are more Actions that you can use in conjunction with different languages and formats like so:

<!-- JS-WORKSPACE-TABLE start -->
<!-- JS-WORKSPACE-TABLE end -->

You can run auto-readme as a pre-commit git hook to automatically keep your READMEs up to date. For example, you can use husky to add the following to your .husky/pre-commit file:

Terminal window
auto-readme -g

This will run auto-readme only when affected README files are changed

OptionAliasDescriptionTypeDefault
--changes-gCheck only changed git filesbooleanfalse
--check-kDo not write to files. Only check for changesbooleanfalse
--config-cPath to config filestring
--verbose-vwhether or not to display verbose loggingbooleanfalse

Most of the options in the schema below can also be used as command-line flags.

auto-readme can be configured using a variety of files, such as package.json with an auto-readme property, or a standalone .autoreadmerc file. For more information on configuration files, see cosmiconfig.

You can configure auto-readme by creating a configuration file (or object) in the root of your project. The following file formats are supported:

  • package.json
  • .autoreadmerc.cjs
  • .autoreadmerc.js
  • .autoreadmerc.json
  • .autoreadmerc.mjs
  • .autoreadmerc.toml
  • .autoreadmerc.ts
  • .autoreadmerc.yaml
  • .autoreadmerc.yml
  • .autoreadmerc
  • .config/.autoreadmerc.json
  • .config/.autoreadmerc.toml
  • .config/.autoreadmerc.yaml
  • .config/.autoreadmerc.yml
  • .config/.autoreadmerc
  • .config/autoreadmerc.cjs
  • .config/autoreadmerc.js
  • .config/autoreadmerc.json
  • .config/autoreadmerc.mjs
  • .config/autoreadmerc.toml
  • .config/autoreadmerc.ts
  • .config/autoreadmerc.yaml
  • .config/autoreadmerc.yml
  • .config/autoreadmerc
  • autoreadme.config.cjs
  • autoreadme.config.js
  • autoreadme.config.mjs
  • autoreadme.config.ts
{
"$schema": "./node_modules/@stephansama/auto-readme/config/schema.json",
"disableEmojis": true
}
# yaml-language-server: $schema=./node_modules/@stephansama/auto-readme/config/schema.yaml
disableEmojis: true
/** @type {import("@stephansama/auto-readme").Config} */
export default {
disableEmojis: true,
};
import type { Config } from "@stephansama/auto-readme";
export default {
disableEmojis: true,
} satisfies Config;

Comment action options

Enum, one of the following possible values:

  • 'ACTION'
  • 'PKG'
  • 'USAGE'
  • 'WORKSPACE'
  • 'ZOD'
  • 'BADGE'

Array of 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies' items.

Default value: ["dependencies","devDependencies"]

Object containing the following properties:

PropertyDescriptionTypeDefault
affectedRegexes (*)Array<string>
badgeOptionsObject with properties:
  • dependencyTypes: BadgeDependencyTypeOptions
  • templates: Array of objects:
    • image (*): string
    • label (*): string
    • url (*): string
    - handlebar template strings where {{scope}}, {{name}} / {{key}} and {{version}} / {{value}} represent the package
{"dependencyTypes":["dependencies","devDependencies"],"templates":[]}
collapseHeadings (*)Array<string>
defaultLanguageDefault language to infer projects fromLanguage
disableEmojisWhether or not to use emojis in markdown table headingsbooleanfalse
disableMarkdownHeadingsWhether or not to display markdown headingsbooleanfalse
enablePrettierWhether or not to use prettier to format the filesbooleantrue
enableTocgenerate table of contents for readmesbooleanfalse
enableUsageWhether or not to enable usage pluginbooleanfalse
headingsList of headings for different table outputsObject with dynamic keys of type Actions and values of type Array<'default' | 'description' | 'devDependency' | 'downloads' | 'name' | 'private' | 'required' | 'version'> (optional){"ACTION":["name","required","default","description"],"BADGE":[],"PKG":["name","version","devDependency"],"USAGE":[],"WORKSPACE":["name","version","downloads","description"],"ZOD":[]}
onlyReadmesWhether or not to only traverse readmesbooleantrue
onlyShowPublicPackagesOnly show public packages in workspacesbooleanfalse
removeScopeRemove common workspace scopestring''
templatesHandlebars templates used to fuel list and table generationObject with properties:
  • downloadImage: string
  • emojis: Record<'default' | 'description' | 'devDependency' | 'downloads' | 'name' | 'private' | 'required' | 'version', string> - Table heading emojis used when enabled
  • registryUrl: string
  • versionImage: string
{"downloadImage":"https://img.shields.io/npm/dw/{{name}}?labelColor=211F1F","emojis":{"default":"⚙️","description":"📝","devDependency":"💻","downloads":"📥","name":"🏷️","private":"🔒","required":"","version":""},"registryUrl":"https://www.npmx.dev/package/{{name}}","versionImage":"https://img.shields.io/npm/v/{{uri_name}}?logo=npm&logoColor=red&color=211F1F&labelColor=211F1F"}
tocHeadingMarkdown heading used to generate table of contentsstring'Table of contents'
usageFileWorkspace level usage filestring''
usageHeadingMarkdown heading used to generate usage examplestring'Usage'
verbosewhether or not to display verbose loggingbooleanfalse

(*) Required. (optional)

Enum, one of the following possible values:

  • 'LIST'
  • 'TABLE'

Default value: 'TABLE'

Enum, one of the following possible values:

  • 'JS'
  • 'RS'

Default value: 'JS'

Module Description

arguments

cli

color

comment

config

data

icon

index

log

pipeline

plugin

schema

utilities