5 Gói NPM bị đánh giá thấp mà có thể bạn chưa dùng
Thế giới NPM vô cùng rộng lớn. Hơn 2 triệu package, nhưng hầu hết lập trình viên chỉ dùng đi dùng lại khoảng 20-30 package phổ biến.
React, Lodash, Express. Những cái tên quen thuộc.
Nhưng còn những NPM ít người chú ý? Những package có thể giúp quy trình làm việc của bạn dễ dàng hơn, sạch hơn, và thông minh hơn?
Dưới đây là 5 package NPM bị đánh giá thấp nhưng xứng đáng nhận được nhiều sự chú ý hơn.
1. date-fns-tz
Xử lý múi giờ dễ dàng hơn.
Nếu bạn từng phải lên lịch một sự kiện xuyên múi giờ, bạn sẽ hiểu nó có thể trở nên rối rắm như thế nào.
Moment.js? Quá nặng.
Tự xử lý offset? Thảm họa.
Lý do nên dùng:
- Dựa trên date-fns, nên có thể tree-shakable.
- Làm tốt một việc duy nhất: quản lý múi giờ.
- Không có overhead không cần thiết.
Khi nào nên dùng?
- Khi bạn xây dựng ứng dụng có hệ thống đặt lịch xuyên múi giờ.
VD:
import { formatInTimeZone } from 'date-fns-tz';
const timeZone = 'America/New_York';
const date = new Date();
const formattedDate = formatInTimeZone(date, timeZone, 'yyyy-MM-dd HH:mm:ssXXX');
console.log(formattedDate); // 2024-11-25 10:00:00-05:00
2. clsx
Viết className
trong React gọn gàng hơn.
Bạn đã từng viết logic className như thế này chưa?
const buttonClass = `btn ${isActive ? 'btn-active' : ''} ${isDisabled ? 'btn-disabled' : ''}`;
Nó hoạt động, nhưng rối rắm và khó đọc.
clsx giúp bạn:
- Xử lý logic className bằng cú pháp gọn gàng.
- Bỏ qua giá trị falsy tự động.
- Làm cho UI code sạch hơn, dễ đọc hơn.
Dành cho ai?
- Những ai muốn viết UI code React chuyên nghiệp hơn.
VD:
import clsx from 'clsx';
const isActive = true;
const isDisabled = false;
const buttonClass = clsx('btn', { 'btn-active': isActive, 'btn-disabled': isDisabled });
console.log(buttonClass); // "btn btn-active"
3. ow
Validation mạnh mẽ, không làm bạn muốn bỏ nghề.
Viết input validation thủ công có thể tẻ nhạt và lặp đi lặp lại.
ow
, được tạo bởi Sindre Sorhus, giúp việc này dễ dàng và rõ ràng hơn.
Lý do bạn nên dùng:
- Tích hợp TypeScript, với thông báo lỗi mạnh mẽ.
- Cú pháp biểu cảm, đọc như tiếng Anh.
- Xử lý validation phức tạp chỉ trong một dòng.
Dùng khi nào?
- Khi cần validate API responses, đầu vào CLI, hoặc tham số function.
VD:
import ow from 'ow';
const validateUser = (user) => {
ow(user, ow.object.exactShape({
name: ow.string.minLength(3),
age: ow.number.integer.positive,
email: ow.string.url,
}));
};
validateUser({ name: 'John', age: 25, email: 'example@example.com' }); // Passes
4. npm-check
Dọn dẹp node_modules của bạn một cách thông minh.
Bạn có từng tự hỏi:
- Package nào đã lỗi thời?
- Package nào không còn được dùng?
- Có package nào bạn quên cài không?
npm-check giúp bạn:
- Tìm các package lỗi thời, không dùng, hoặc thiếu.
- Giao diện tương tác, cho phép cập nhật/gỡ cài đặt bằng một phím bấm.
- Hoạt động với cả package cục bộ và toàn cục.
Lý tưởng cho ai?
- Những ai muốn giữ dự án Node.js sạch sẽ và không lộn xộn.
VD:
npx npm-check
Chạy lệnh đó và bạn sẽ nhận được danh sách tương tác các phụ thuộc với các tùy chọn để cập nhật hoặc xóa chúng.
5. log-symbols
Làm cho log trong CLI dễ đọc hơn.
Bạn từng xây dựng CLI tool và thấy nó trông quá đơn điệu?
log-symbols giúp bạn:
- Thêm biểu tượng trực quan vào log (✅ ❌ ⚠️).
- Hỗ trợ macOS, Linux, và Windows.
- Nhỏ nhưng mạnh mẽ.
Khi nào nên dùng?
- Khi bạn muốn CLI log trông chuyên nghiệp hơn.
VD:
import logSymbols from 'log-symbols';
console.log(logSymbols.success, 'Build completed successfully!');
console.log(logSymbols.error, 'Failed to connect to the database.');
console.log(logSymbols.warning, 'Using default configuration.');
Đừng chỉ sử dụng những gì phổ biến. Hãy sử dụng những gì giúp cuộc sống của bạn dễ dàng hơn.
Lần tới khi bạn thấy mình đang lặp lại mã hoặc đang vật lộn với một vấn đề phổ biến, hãy thử khám phá những góc ít được biết đến của NPM.
Cảm ơn các bạn đã theo dõi!
All rights reserved