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)