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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cjkihl/create-exports

v1.0.10

Published

Tool to generate package exports configuration for TypeScript packages

Readme

@cjkihl/create-exports

npm version License: MIT PRs Welcome Sponsor

A powerful tool to automatically generate exports and binary entries in your package.json based on your TypeScript files. Streamline your TypeScript package configuration with zero manual effort.

✨ Features

  • 🔍 Automatically finds and generates exports for public files (.pub.ts, .pub.tsx)
  • 🛠️ Automatically finds and generates binary entries for CLI files (.bin.ts, .bin.tsx)
  • ⚙️ Supports custom package.json and tsconfig.json paths
  • 🧪 Dry run mode to preview changes
  • 📝 Sorts exports and binary entries alphabetically
  • 📁 Handles index files and nested directories correctly
  • 🚀 Zero configuration needed
  • 📦 Works with any package manager (npm, yarn, pnpm, bun)

Installation

# Using npm
npm install @cjkihl/create-exports

# Using yarn
yarn add @cjkihl/create-exports

# Using pnpm
pnpm add @cjkihl/create-exports

# Using bun
bun add @cjkihl/create-exports

Usage

Command Line

# Show help
create-exports --help

# Run with default settings
create-exports

# Dry run to see what would change
create-exports --dry-run

# Use custom package.json and tsconfig.json
create-exports --package-json ./custom/package.json --tsconfig ./custom/tsconfig.json

Options

  • -p, --package-json <path>: Path to package.json file
  • -t, --tsconfig <path>: Path to tsconfig.json file
  • -d, --dry-run: Show what would be changed without writing
  • -h, --help: Show help message

Programmatic Usage

import { createExports } from "@cjkihl/create-exports";

// With default options
await createExports();

// With custom options
await createExports({
  packageJsonPath: "./custom/package.json",
  tsconfigPath: "./custom/tsconfig.json",
  dryRun: true
});

File Naming Conventions

Public Exports

Files that should be exported must end with .pub.ts or .pub.tsx. For example:

  • index.pub.ts → exported as root
  • src/utils.pub.ts → exported as ./src/utils
  • src/components/index.pub.tsx → exported as ./src/components

Binary Files

Files that should be available as CLI commands must end with .bin.ts or .bin.tsx. For example:

  • cli.bin.ts → available as cli command
  • tools/helper.bin.ts → available as helper command

Output

The tool will update your package.json with:

  1. exports field containing all public exports with their TypeScript types
  2. bin field containing all binary entries

Example output:

{
  "exports": {
    ".": {
      "types": "types/index.pub.d.ts",
      "default": "dist/index.pub.js"
    },
    "./src/utils": {
      "types": "types/src/utils.pub.d.ts",
      "default": "dist/src/utils.pub.js"
    }
  },
  "bin": {
    "cli": "dist/cli.bin.js",
    "helper": "dist/tools/helper.bin.js"
  }
}

Requirements

  • Node.js >= 18.0.0
  • TypeScript project with tsconfig.json
  • package.json

🤝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

This project is MIT licensed.

🙏 Acknowledgments

  • Thanks to all contributors who have helped shape this project
  • Inspired by the need for better TypeScript package configuration management

📫 Contact

⭐ Show your support

Give a ⭐️ if this project helped you!

💝 Sponsor

If you find this project helpful, please consider sponsoring me on GitHub:

Sponsor

Your support helps me maintain and improve this project!