@cjkihl/create-exports
v1.0.10
Published
Tool to generate package exports configuration for TypeScript packages
Maintainers
Readme
@cjkihl/create-exports
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-exportsUsage
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.jsonOptions
-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 rootsrc/utils.pub.ts→ exported as./src/utilssrc/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 asclicommandtools/helper.bin.ts→ available ashelpercommand
Output
The tool will update your package.json with:
exportsfield containing all public exports with their TypeScript typesbinfield 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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:
Your support helps me maintain and improve this project!
