NPM đại cương - Tôi đã đẩy package lên npm như thế nào?

NPM đại cương - Tôi đã đẩy package lên npm như thế nào?

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Jan là một phần mềm mã nguồn mở có khả năng thay thế ChatGPT. Bằng cách tải về nhiều mô hình ngôn ngữ lớn, Jan có khả năng hoạt động ngoại tuyến, dữ liệu hoàn toàn ở trong máy và không lo về quyền riêng tư nữa.

    Điểm ăn tiền của Jan so với các ứng dụng tương tự khác là giao diện gọn gàng, dễ sử dụng, dễ dàng tìm kiếm và tải về models mà bạn mong muốn. Ngoài ra, Jan cũng có khả năng kết nối API với các nhà cung cấp như OpenAI, Anthropic... để hoạt động trực tuyến.

    » Xem thêm
  • Dành cho những ai chưa biết, snapdrop là một ứng dụng mã nguồn mở, giúp chia sẻ dữ liệu cho nhau nếu đang ở trong cùng một mạng Wifi, hoạt động dựa trên WebRTC. Ủa lạ hen, sao không dùng luôn AirDrop hoặc Nearby Share đi mà dùng cái này chi cho mắc mệt? Đấy là trong trường hợp cả 2 dùng chung hệ điều hành thôi, còn khác hệ điều hành thì chịu, ví dụ như giữa Android với iOS, MacOS với Linux hoặc Windows... Lúc này thì snapdrop tỏ ra cực kỳ hữu ích đấy 😁

    » Xem thêm
  • 24 sự thật thú vị về SQLite Collection of insane and fun facts about SQLite. Phải nói rằng nó khủng thật 🔥

    » Xem thêm

Vấn đề

Chắc hẳn mọi người ở đây ai cũng từng nghe, biết và sử dụng npm hằng ngày trong công việc. NPM là một kho lưu trữ packages khổng lồ mà chủ yếu là các thư viện javascript dùng cho lập trình web hay node.js.

Bản thân NPM chỉ là kho vậy thì các package từ đâu ra? Câu trả lời là từ cộng đồng, trong đó có thể có chính các bạn - những người hẳn đang có những ý tưởng thú vị và sẵn sàng chia sẻ.

Bản thân tôi sau rất nhiều lần dùng "chùa" các packages thì một biến cố lớn xảy đến, đó là tôi không thể tìm được một component nào nhập mã OTP cho vue.js cả (tại thời điểm lúc đó, còn bây giờ thì tôi cũng không rõ lắm :D). Thế là tôi đành phải tự viết, nhưng khoan thay vì dùng một mình thì tại sao tôi không đóng gói nó và chia sẻ lên mạng nhỉ? Lúc đó điều tôi nghĩ ngay đến là mạng "phân phối nội dung" NPM thần thánh.

Ý tưởng đến để xây dựng một package luôn xuất hiện ở mọi nơi, mặc dù bây giờ có hàng chục hoặc thậm chí hàng trăm package khác nhau nhưng cùng giải quyết cùng một vấn đề. Cạnh tranh với các package lâu đời có lượt download khổng lồ là khó. Tuy nhiên đóng góp một phần nhỏ bé cũng là đóng góp phải không mọi người? Điều bạn cần là tạo một package có độ tin cậy cao, phát hành đúng thời điểm cộng một chút may mắn.

Lựa chọn nền tảng cho packages

Các packages trên npm rất đa dạng, ví dụ có những package chỉ dành cho browser hoặc chỉ dành cho node.js, hay có cả những package hỗ trợ cả hai. Ngoài ra một package viết cho vue.js thì react.js không thể nào dùng được v.v...& v.v..

Vì thế ngay từ đầu bạn nên xác định sẽ viết package sử dụng cho nền tảng nào. Ví như như tôi đã chọn "package OTP INPUT cho vue.js".
Việc xây dựng một package sẽ dễ dàng hơn nếu như bạn tìm được "khung" phù hợp. Khung ở đây là một project được setup sẵn mọi thứ từ run build, run dev, run test... tất tần tật, việc của bạn chỉ là tập trung vào xử lý logic.
Hoặc nếu không tìm thấy hay không muốn dùng sẵn thì bạn có thể lựa chọn xây dựng từ đầu, đồng nghĩa với việc bạn phải setup tất cả mọi thứ. Dĩ nhiên là có thể lược bớt các thành phần như run dev, run test... nhưng như thế sẽ khiến package của bạn thiếu đi sự "chuyên nghiệp".

Một số khung phổ biết mà tôi biết:

Sau khi đã hoàn thành logic cho package, tôi sẽ cần phải tạo một file README.md trong đó mô tả cách sử dụng, các attributes v.v... đủ để cho mọi người hiểu. Ngoài ra còn chỉ cho họ cách để chạy dev, test... khi họ muốn contribute.
Bước cuối cùng là bước publish package lên npm.

Làm quen npm cli

CLI của npm giúp sẽ giúp tôi đẩy package lên repository. Mặc định khi cài node.js là sẽ có npm, vì thế ai chưa có thì cài node.js nhé!

Kiểm tra phiên bản npm:

$ npm -v
6.14.12

Đăng nhập vào npm:

$ npm login

Di chuyển đến thư mục chứa project cần publish, ví dụ ở đây tôi move đến thư mục vue-otp-2:

$ cd vue-otp-2

Đảm bảo rằng trong thư mục đó đã có file package.json. NPM sẽ dựa vào package.json để publish package của bạn, một file package.json cơ bản phải có name & version:

{
  "name": "vue-otp-2",  
  "version": "1.0.0",  
}

Trong đó name là tên package được dùng để install npm i vue-otp-2 còn version là phiên bản của package tại thời điểm publish.

Sau đó publish:

$ npm publish

Ngồi chờ cho đến khi publish thành công và bạn sẽ nhận được một email thông báo về việc này.

Một số lưu ý khi publish:

  • Hãy đảm bảo version package của bạn theo chuẩn semantic. Nếu chưa biết có thể xem thêm ở đây.

  • Hãy đảm bảo tên version của bạn là unique trên npm. Ví dụ bạn không thể đặt tên package là vue-opt-2 nữa đơn giản là tôi đã sở hữu cái tên đó rồi, còn nếu bạn vẫn muốn dùng cái tên đó thì npm cung cấp thêm một lựa chọn tên package nữa đại loại sẽ gắn thêm username của bạn vào tên: @hoaitx:vue-opt-2. Tham khảo cách thiết lập tại đây.

  • Ngoài name & version thì còn rất nhiều thông số thú vị để khiến cho profile package của bạn trông "ngầu" hơn. Tham khảo thêm tại đây.

Tips & tricks:

  • Một vài bạn publish thành công rồi nhưng lúc install vào project thì không sử dụng được thì rất có thể là chưa xác định đúng điểm nhập module trong package. Cụ thể package.json có một thuộc tính là main được dùng để xác định file nào sẽ được import vào khi gọi require/import mặc định là index.js. Ví dụ package có name là foo, khi gọi require("foo") thì nó tương ứng với đường dẫn là node_modules/foo/index.js.

  • Try on RunKit là một ứng dụng cho phép chúng ta dùng thử package trước khi quyết định có nên cài đặt hay không :D.

Tổng kết

Ở bài viết này tôi chỉ dừng lại ở mức tường thuật lại quá trình publish package của tôi lên npm. Ở bài viết sau tôi sẽ đi vào chi tiết từng bước tạo package.

À cho bạn nào thắc mắc từ đầu bài đến giờ chưa thấy link đến package của tôi thì nó đây https://www.npmjs.com/package/vue-otp-2.

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 (0)

Nội dung bình luận...
Bấm hoặc cuộn mạnh để sang bài mới