1. Initialize the Project
mkdir my-ts-lib cd my-ts-lib npm init -y
2. Install Development Dependencies
npm install --save-dev typescript tsup eslint prettier
3. Create tsconfig.json
npx tsc --init
Then edit it like:
{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "declaration": true, "outDir": "dist", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "moduleResolution": "Node", "resolveJsonModule": true }, "include": ["src"] }
4. Create Library Code
Create a src/
folder:
src/ ├── index.ts
Example src/index.ts
:
export function greet(name: string): string { return `Hello, ${name}!`; }
5. Bundle with tsup
Add tsup.config.ts
:
import { defineConfig } from 'tsup'; export default defineConfig({ entry: ['src/index.ts'], format: ['esm', 'cjs'], dts: true, clean: true, });
Add to package.json
:
"scripts": { "build": "tsup" }
Run:
npm run build
6. Prepare for Publishing
Edit package.json
:
{ "name": "your-lib-name", "version": "1.0.0", "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "files": ["dist"], "exports": { "import": "./dist/index.mjs", "require": "./dist/index.js" } }
7. Publish to npm
- Log in to npm:
npm login
- Publish:
npm publish --access public
If the name is taken, either pick a unique name or use a scoped package.
8. Install & Use the Library
Anywhere else:
npm install your-lib-name
Then in code:
import { greet } from 'your-lib-name'; console.log(greet('World'));
Top comments (0)