DEV Community

Shelner
Shelner

Posted on

How to create a simple library using typescript

1. Initialize the Project

mkdir my-ts-lib cd my-ts-lib npm init -y 
Enter fullscreen mode Exit fullscreen mode

2. Install Development Dependencies

npm install --save-dev typescript tsup eslint prettier 
Enter fullscreen mode Exit fullscreen mode

3. Create tsconfig.json

npx tsc --init 
Enter fullscreen mode Exit fullscreen mode

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"] } 
Enter fullscreen mode Exit fullscreen mode

4. Create Library Code

Create a src/ folder:

src/ ├── index.ts 
Enter fullscreen mode Exit fullscreen mode

Example src/index.ts:

export function greet(name: string): string { return `Hello, ${name}!`; } 
Enter fullscreen mode Exit fullscreen mode

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, }); 
Enter fullscreen mode Exit fullscreen mode

Add to package.json:

"scripts": { "build": "tsup" } 
Enter fullscreen mode Exit fullscreen mode

Run:

npm run build 
Enter fullscreen mode Exit fullscreen mode

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" } } 
Enter fullscreen mode Exit fullscreen mode

7. Publish to npm

  1. Log in to npm:
npm login 
Enter fullscreen mode Exit fullscreen mode
  1. Publish:
npm publish --access public 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Then in code:

import { greet } from 'your-lib-name'; console.log(greet('World')); 
Enter fullscreen mode Exit fullscreen mode

References

Github
npm

Top comments (0)