Membuat NPM package adalah skill yang sangat valuable untuk developer JavaScript. Artikel ini akan membahas step-by-step cara membuat dan publish package pertama Anda.
Mengapa Membuat NPM Package?
NPM package memungkinkan Anda untuk:
- Reusability: Code yang bisa digunakan di berbagai project
- Sharing: Berbagi solusi dengan developer lain
- Maintainability: Centralized code management
- Version Control: Semantic versioning untuk updates
Setup Project
Pertama, buat folder baru untuk package Anda:
mkdir my-awesome-package
cd my-awesome-package
npm init -y
Struktur Folder
my-awesome-package/
├── src/
│ └── index.js
├── test/
│ └── index.test.js
├── package.json
├── README.md
└── .gitignore
Menulis Code Package
Buat file src/index.js:
/**
* Fungsi untuk format currency
* @param {number} amount - Jumlah uang
* @param {string} currency - Kode mata uang (default: IDR)
* @returns {string} Formatted currency string
*/
function formatCurrency(amount, currency = 'IDR') {
return new Intl.NumberFormat('id-ID', {
style: 'currency',
currency: currency
}).format(amount);
}
module.exports = { formatCurrency };
Konfigurasi package.json
Update package.json Anda:
{
"name": "my-awesome-package",
"version": "1.0.0",
"description": "Utility package for formatting currency",
"main": "src/index.js",
"scripts": {
"test": "jest"
},
"keywords": ["currency", "format", "utility"],
"author": "Your Name",
"license": "MIT"
}
Testing Package
Install Jest untuk testing:
npm install --save-dev jest
Buat file test/index.test.js:
const { formatCurrency } = require('../src/index');
describe('formatCurrency', () => {
test('should format IDR currency correctly', () => {
expect(formatCurrency(1000000)).toBe('Rp1.000.000,00');
});
test('should format USD currency correctly', () => {
expect(formatCurrency(1000, 'USD')).toBe('US$1.000,00');
});
});
Publish ke NPM
- Login ke NPM:
npm login
- Publish package:
npm publish
Best Practices
Tips- Gunakan semantic versioning
- Tulis dokumentasi yang jelas
- Tambahkan TypeScript definitions
- Setup CI/CD untuk automated testing
- Gunakan .npmignore untuk exclude files
Kesimpulan
Membuat NPM package adalah cara yang bagus untuk berkontribusi ke ecosystem JavaScript. Mulai dari package kecil dan simple, lalu tingkatkan complexity seiring pengalaman.
Happy coding! 🚀