@stephansama/auto-readme
Generate lists and tables for your README automagically based on your repository
Table of contents
Section titled “Table of contents”Open Table of contents
Installation
Section titled “Installation”pnpm install @stephansama/auto-readmeIn order to run the script you need to do two things
- Create either a heading or a comment to enable the corresponding feature
- Run the following command:
pnpx @stephansama/auto-readme [options]To turn on table of content enable the setting enableToc and add the following header
## Table of contentsTo turn on the usage generator enable the setting enableUsage and add the following header
## UsageTo 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:
auto-readme -gThis will run auto-readme only when affected README files are changed
CLI Options
Section titled “CLI Options”| Option | Alias | Description | Type | Default |
|---|---|---|---|---|
--changes | -g | Check only changed git files | boolean | false |
--check | -k | Do not write to files. Only check for changes | boolean | false |
--config | -c | Path to config file | string | |
--verbose | -v | whether or not to display verbose logging | boolean | false |
Most of the options in the schema below can also be used as command-line flags.
Configuration
Section titled “Configuration”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.
Configuration File
Section titled “Configuration File”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/autoreadmercautoreadme.config.cjsautoreadme.config.jsautoreadme.config.mjsautoreadme.config.ts
JSON Example
Section titled “JSON Example”{ "$schema": "./node_modules/@stephansama/auto-readme/config/schema.json", "disableEmojis": true}YAML Example
Section titled “YAML Example”# yaml-language-server: $schema=./node_modules/@stephansama/auto-readme/config/schema.yamldisableEmojis: trueJavaScript Example
Section titled “JavaScript Example”/** @type {import("@stephansama/auto-readme").Config} */export default { disableEmojis: true,};TypeScript Example
Section titled “TypeScript Example”import type { Config } from "@stephansama/auto-readme";
export default { disableEmojis: true,} satisfies Config;Schema
Section titled “Schema”Zod Schema
Section titled “Zod Schema”Actions
Section titled “Actions”Comment action options
Enum, one of the following possible values:
'ACTION''PKG''USAGE''WORKSPACE''ZOD''BADGE'
BadgeDependencyTypeOptions
Section titled “BadgeDependencyTypeOptions”Array of 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies' items.
Default value: ["dependencies","devDependencies"]
Config
Section titled “Config”Object containing the following properties:
| Property | Description | Type | Default |
|---|---|---|---|
affectedRegexes (*) | Array<string> | ||
badgeOptions | Object with properties:
| {"dependencyTypes":["dependencies","devDependencies"],"templates":[]} | |
collapseHeadings (*) | Array<string> | ||
defaultLanguage | Default language to infer projects from | Language | |
disableEmojis | Whether or not to use emojis in markdown table headings | boolean | false |
disableMarkdownHeadings | Whether or not to display markdown headings | boolean | false |
enablePrettier | Whether or not to use prettier to format the files | boolean | true |
enableToc | generate table of contents for readmes | boolean | false |
enableUsage | Whether or not to enable usage plugin | boolean | false |
headings | List of headings for different table outputs | Object 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":[]} |
onlyReadmes | Whether or not to only traverse readmes | boolean | true |
onlyShowPublicPackages | Only show public packages in workspaces | boolean | false |
removeScope | Remove common workspace scope | string | '' |
templates | Handlebars templates used to fuel list and table generation | Object with properties:
| {"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"} |
tocHeading | Markdown heading used to generate table of contents | string | 'Table of contents' |
usageFile | Workspace level usage file | string | '' |
usageHeading | Markdown heading used to generate usage example | string | 'Usage' |
verbose | whether or not to display verbose logging | boolean | false |
(*) Required. (optional)
Formats
Section titled “Formats”Enum, one of the following possible values:
'LIST''TABLE'
Default value: 'TABLE'
Language
Section titled “Language”Enum, one of the following possible values:
'JS''RS'
Default value: 'JS'
Modules
Section titled “Modules”| Module | Description |
|---|---|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |
|
|
‐ |