NPM là gì? Tại sao NPM lại đi cùng với Node.js

NPM là gì? Tại sao NPM lại đi cùng với Node.js

Tin ngắn hàng ngày dành cho bạn
  • Rust sinh ra để tái định nghĩa nhiều thứ. Trong đó chắc phải kể đến JavaScript. Từ đầu năm đến giờ các công cụ làm từ Rust mà để cho JavaScript dùng đếm sương sương cũng vài ba cái rồi. Mới đây nhất là Oxc.

    Oxc là một công cụ phân tích cú pháp (parser), kiểm tra lỗi (lint), định dạng (formatter), chuyển đổi (transformer), minifier... tất cả đều được viết bằng Rust, trong một công cụ duy nhất.

    Mặc dù vẫn đang trong quá trình xây dựng nhưng thử nhìn điểm hiệu năng của nó so với swc hoặc eslint mà xem 🫣

    » Xem thêm
  • Mấy hôm nay, à mà cũng không hẳn, do sự kiện WWDC vừa rồi nên Apple lại bị dân cư mạng mang ra bàn tán rằng rốt cục thì các tính năng AI của họ đang ở đâu? Trong khi các hãng khác đang lao mình vào việc mang AI lên thiết bị, phần mềm của họ thì Apple lại đang có vẻ... không quan tâm lắm.

    Thậm chí mới đây các nhà nghiên cứu của Apple cho rằng các mô hình LLM sẽ "sụp đổ hoàn toàn về độ chính xác" khi được đưa ra các vấn đề cực kỳ phức tạp. Chỉ ra rằng suy luận chỉ là huyễn hoặc thì ngay lập tức đã có nhiều bài phản bác nghiên cứu này. Một lần nữa cho thấy rằng Apple đang suy nghĩ điều gì với AI trên thiết bị của họ?

    Mình thì nghĩ đơn giản thôi, Apple có vẻ đang gặp khó khăn với việc tạo ra AI cho riêng họ. Tức là khó khăn ngay từ đoạn thu thập dữ liệu để đào tạo rồi. Họ luôn tỏ ra tôn trọng quyền riêng tư của người dùng nên chẳng lẽ lại lên mạng đi xào nấu dữ liệu ở khắp nơi, hoặc "chôm" dữ liệu dưới máy người dùng lên? Chắc chắn, họ cũng không muốn cung cấp thêm dữ liệu người dùng cho các bên thứ 3 như OpenAI.

    Nhưng nhờ những khó khăn này biết đâu họ lại tìm ra được hướng đi mới. Ai cũng chọn phần dễ thì gian khổ để phần cho ai 😁. À mình không phải là "fan" của Apple, chỉ là thấy cái nào phù hợp thì dùng thôi 🤓

    » Xem thêm
  • Người "nhạy cảm" với markdown đó là khi thấy một thư viện tạo khung soạn thảo mới là nhảy ngay vào xem nó có gì mới. Milkdown/milkdown là một ví dụ.

    Xem thử thì thấy ổn phết mọi người ạ. Vài nữa thử tích hợp vào opennotas xem sao. Mang tiếng là ứng dụng ghi chú hỗ trợ markdown cơ mà cái thư viện tiptap nó không chịu làm thêm phần hỗ trợ markdown 😩. Dùng thư viện ngoài thì vẫn chưa ngon cho lắm.

    » Xem thêm

Vấn đề

NPM (Node Package Manager) là chương trình quản lý thư viện (package manager) ngầm định trong môi trường Node.js. Nó bao gồm một trình gọi dòng lệnh (Command Line) từ máy khách Client với tên gọi là npm, và cơ sở dữ liệu trực tuyến chứa các gói public và private còn được gọi là npm registry. Npm registry được gọi từ npm client và trên web browser.

Khi cài đặt Node.js, chúng ta sẽ được "khuyến mãi" thêm npm.

Kiểm tra phiên bản npm hiện tại.

npm -v
# 6.14.4

Mỗi ngày có hàng trăm, hàng nghìn dự án được tải lên đây, bao gồm thư viện hay framework mới. Điều đó đồng nghĩa với việc hầu hết những thứ bạn cần đều có trên này.

Sử dụng NPM

Ví dụ bạn cần một thư viện có thể chuyển tiếng việt có dấu về không dấu, thay vì bạn phải tự viết thì trên npm đã có sẵn một gói tên là vn-remove-accents cung cấp cho bạn tính năng đấy, chỉ việc kéo về dùng thôi.

# tạo thư mục
mkdir remove-accents

# di chuyển vào thư mục
cd remove-accents

# cài gói vn-remove-accents
npm i vn-remove-accents

Tạo một file index.js trong thư mục remove-accents, nội dung:

const removeAccents = require('vn-remove-accents');
const str = 'Blog chia sẻ lập trình kiến thức javascript';
console.log(removeAccents(str)) // Blog chia se lap trinh kien thuc javascript

Hầu hết các gói trên npm đều có hướng dẫn cài đặt và hướng dẫn sử dụng đi kèm nên bạn không cần phải quá lo lắng về cách sử dụng các gói như thế nào. Việc bạn cần là xác định đúng gói nào hỗ trợ giải quyết vấn đề hiện tại (Có thể search google mô tả nhu cầu kèm theo từ npm ở cuối sẽ ra rất nhiều gợi ý. Ví dụ: vietnam remove accents npm).

Quay trở lại thư mục gốc remove-accents đã tạo ở trên, lúc này sẽ thấy xuất hiện một tệp tin package.json được tạo ra bao gồm một số thông tin kể cả gói vn-remove-accents được kéo về và một thư mục node_modules.

Thì ở đây thư mục node_modules sẽ chứa các gói mà bạn đã chạy lệnh install như gói vn-remove-accents trên.
Còn file package.json đóng vai trò là tệp quản lý phụ thuộc. Tức là khi bạn chạy lệnh npm install thì nó sẽ cài tất cả các gói có trong file này.

npm là một công cụ tuyệt vời cho node.js, nhờ npm ta không phải lang thang trên mạng để tìm những gói từ nhiều nguồn khác nhau, cũng không cần quá lo lắng khi tải một project trên mạng về mà không biết nó dùng những gói phụ thuộc nào. Tất cả đã có file package.json.

Tuy nhiên không phải tất cả các gói trên npm là đáng tin cậy. Hãy thận trọng khi cài chúng.

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (1)

Nội dung bình luận...
Avatar
Xuân Hoài Tống4 năm trước

npm là một công cụ tuyệt vời cho node.js, nhờ npm ta không phải lang thang trên mạng để tìm những gói từ nhiều nguồn khác nhau, cũng không cần quá lo lắng khi tải một project trên mạng về mà không biết nó dùng những gói phụ thuộc nào. Tất cả đã có file package.json

Trả lời
Avatar
Xuân Hoài Tống4 năm trước

Bạn nói hay quá. Bạn gỡ bình luận đi

Avatar
Hoai Tong Xuan4 năm trước

Vẫn là tôi nhưng đến từ Github

Avatar
Gió4 năm trước

quay tay à bạn ?