Documentation for Simbo's Packages
    Preparing search index...

    Module @simbo/monorepo-packages-list - v1.1.3

    Monorepo Packages List

    📦 @simbo/monorepo-packages-list

    A utility library that generates a list of monorepo packages with metadata.

    It works with npm and pnpm workspaces and is built on top of @simbo/monorepo-utils.

    See @simbo/monorepo-packages-list-cli for the corresponding CLI.

    • Collects workspace metadata from npm or pnpm monorepos

    • Fully customizable output via templates and hooks

    • Supports filtering, sorting, and URL generation for each package

    • Handles inserting content before and after the list for complete page sections

    • Async, Promise-based API

    • Fully typed with TypeScript

    Install @simbo/monorepo-packages-list from the npm registry:

    npm i [-D] @simbo/monorepo-packages-list
    

    monorepoPackagesList() uses metadata from your monorepo and returns a Markdown list as string.

    🎨 The output can be completely customized.

    For a complete API reference, see the documentation.

    Assume you have two packages in your monorepo: @scope/pkg-a and @scope/pkg-b

    import { monorepoPackagesList } from '@simbo/monorepo-packages-list';

    const list = await monorepoPackagesList();

    console.log(list);

    Produces:

    There are currently _**2**_ packages managed in this repository:

    - 📂 **`pkg-a`**
    - **Package A**

    > A sample package

    📦 `@scope/pkg-a` @ `1.2.3`

    - 📂 **`pkg-b`**
    - **Package B**

    > Another sample package

    📦 `@scope/pkg-b` @ `3.2.1`

    You can provide URL functions via the templateData option:

    import {
    monorepoPackagesList,
    type WorkspaceMetadata,
    } from '@simbo/monorepo-packages-list';

    const list = await monorepoPackagesList({
    templateData: {
    repoUrlFn: (workspace: WorkspaceMetadata) =>
    `https://github.com/user/repo/tree/main/${workspace.relativePath}/`,
    packageUrlFn: (workspace: WorkspaceMetadata) =>
    `https://www.npmjs.com/package/${workspace.name}`,
    docsUrlFn: (workspace: WorkspaceMetadata) =>
    `https://user.github.io/repo/modules/${workspace.name.replaceAll(/[^\da-z-]/gi, '_')}`,
    readmeUrlFn: (workspace: WorkspaceMetadata) =>
    `https://github.com/user/repo/blob/main/${workspace.relativePath}/README.md`,
    changelogUrlFn: (workspace: WorkspaceMetadata) =>
    `https://github.com/user/repo/blob/main/${workspace.relativePath}/CHANGELOG.md`,
    },
    });

    Produces a list with clickable links:

    There are currently _**2**_ packages managed in this repository:

    - 📂 [**`pkg-a`**](https://github.com/user/repo/tree/main/packages/pkg-a/)
    - **Package A**

    > A sample package

    📦 [`@scope/pkg-a`](https://www.npmjs.com/package/@scope/pkg-a) @ `1.2.3`

    [README.md](https://github.com/user/repo/blob/main/packages/pkg-a/README.md)  • 
    [CHANGELOG.md](https://github.com/user/repo/blob/main/packages/pkg-a/CHANGELOG.md)  • 
    [Documentation](https://user.github.io/repo/modules/_scope_pkg-a)

    - 📂 [**`pkg-b`**](https://github.com/user/repo/tree/main/packages/pkg-b/)
    - **Package B**

    > Another sample package

    📦 [`@scope/pkg-b`](https://www.npmjs.com/package/@scope/pkg-b) @ `3.2.1`

    [README.md](https://github.com/user/repo/blob/main/packages/pkg-b/README.md)  • 
    [CHANGELOG.md](https://github.com/user/repo/blob/main/packages/pkg-b/CHANGELOG.md)  • 
    [Documentation](https://user.github.io/repo/modules/_scope_pkg-b)

    MIT © Simon Lepel

    Interfaces

    Options
    TemplateData

    Type Aliases

    BeforeAfterFn
    FilterFn
    SortCompareFn
    TemplateDataFn
    TemplateFn

    Variables

    optionsSchema
    validateOptions

    Functions

    monorepoPackagesList