Trình tạo package.json

package.json
Tiếp theo

Thay vì chạy lệnh npm init và trả lời mười một câu hỏi, hãy điền vào một biểu mẫu để nhận được tệp package.json có cấu trúc rõ ràng và hoàn chỉnh. Công cụ này bao gồm các trường bắt buộc (tên, phiên bản), các trường thường dùng (script, phụ thuộc, phụ thuộc phát triển, engine), cùng các thông tin bổ sung quan trọng (kho mã, lỗi, từ khóa, giấy phép) giúp gói phần mềm dễ dàng được tìm kiếm và đăng tải.

Cách tạo tệp package.json của bạn

  1. 1

    Nhập tên và phiên bản

    Tên phải tuân theo quy tắc của npm: viết bằng chữ thường, phù hợp với URL và không quá 214 ký tự. Phiên bản sử dụng định dạng semver (ví dụ: 0.1.0).

  2. 2

    Chọn loại mô-đun

    CommonJS (bắt đầu mặc định) hoặc ESM thông qua thuộc tính “type”: “module”. Áp dụng cho các dự án Node.js từ phiên bản 14 trở lên.

  3. 3

    Thêm các script

    Bắt đầu, xây dựng, kiểm thử và hiệu chỉnh mã – các lệnh này được thực thi bằng `npm run <name>`.

  4. 4

    Danh sách phụ thuộc

    Các gói runtime nằm trong các phụ thuộc; các công cụ phần mềm nằm trong các phụ thuộc phát triển.

  5. 5

    Đặt thông tin siêu dữ liệu

    Mô tả, tác giả, giấy phép, địa chỉ URL của kho lưu trữ, từ khóa.

  6. 6

    Sao chép kết quả đầu ra

    Dán vào tệp package.json mới ở thư mục gốc của dự án.

Các trường quan trọng nhất

Trường Có bắt buộc không? Ghi chú
name Viết bằng chữ thường, từ 1 đến 214 ký tự, phù hợp với URL
version Semver (major.minor.patch)
type Không “module” dành cho ESM; bỏ qua đối với CommonJS
main Được khuyến nghị Điểm bắt đầu sử dụng CommonJS (index.js)
exports Được khuyến nghị Bản đồ xuất khẩu hiện đại dành cho hệ thống CJS/ESM kép
scripts Được khuyến nghị mạnh mẽ Các lệnh npm run <name>
dependencies Theo nhu cầu Các gói phần mềm chạy chương trình
devDependencies Theo nhu cầu Các công cụ xây dựng, trình chạy kiểm thử và công cụ rà soát lỗi
engines Nên có Phạm vi phiên bản Node bắt buộc
license Có thể đăng tải Mã nhận dạng SPDX tương tự như MIT, Apache-2.0

Bảng tóm tắt bí quyết của Semver

  • 1.0.0, major.minor.patch
  • ^1.0.0 – tương thích với phiên bản 1.x.x (≥1.0.0, <2.0.0)
  • ~1.0.0, chỉ cập nhật bản vá (≥ 1.0.0, < 1.1.0)
  • >=1.0.0 <2.0.0, phạm vi xác định rõ ràng
  • 1.0.0-beta.1, prerelease
  • latest, thẻ npm, không phải là phiên bản

Giá trị mặc định khi chạy npm install package^, cho phép thực hiện các bản nâng cấp mà không làm gián đoạn quá trình hoạt động.

Các kịch bản tiêu chuẩn đáng có

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

Những sai lầm phổ biến trong việc đặt tên

  • Không có chữ in hoa. MyPackage không thể chạy được với npm install.
  • Không có khoảng trắng. Hãy sử dụng dấu gạch nối: my-package.
  • Tên phạm vi bắt đầu bằng @org/ đối với các tổ chức trên GitHub hoặc npm: @acme/utils.
  • Các từ được bảo quản: Các mã node_modules, favicon.ico, coreexpress không thể sử dụng làm tên gói.

Các tùy chọn giấy phép

Chọn một định danh SPDX được công nhận:

  • MIT, lựa chọn phổ biến và được chấp nhận rộng rãi nhất.
  • Apache-2.0 – bản quyền mở với quyền cấp bằng sáng chế được chấp nhận.
  • ISC – giấy phép rất ngắn tương tự MIT, là giá trị mặc định của npm.
  • GPL-3.0 hoặc phiên bản mới hơn – thuộc loại bản quyền cộng đồng (copyleft).
  • UNLICENSED, gói riêng tư, không dùng để phân phối.

Các chuỗi giấy phép sai hoặc mơ hồ sẽ kích hoạt cảnh báo khi công bố trên npm.

Câu hỏi thường gặp

Các phụ thuộc được cài đặt khi người dùng chạy npm install trong một dự án sử dụng phần mềm của bạn. Các phụ thuộc phát triển chỉ được cài đặt trong môi trường phát triển riêng của gói phần mềm đó. Hãy đặt các gói dùng trong quá trình thực thi vào mục phụ thuộc, còn các công cụ kiểm thử và xây dựng thì đặt vào mục phụ thuộc phát triển.

Đúng vậy, đối với các ứng dụng thì file khóa xác định chính xác phiên bản và đảm bảo quá trình cài đặt có thể được tái hiện đồng đều trên mọi máy tính cũng như trong quy trình CI. Đối với các gói thư viện được phát hành lên npm, file khóa là tùy chọn – người dùng sẽ nhận được file khóa riêng của mình.

Chỉ khi bạn muốn gói tin được thiết lập mặc định là định dạng ESM (cách nhập/xuất dữ liệu). Nếu không chọn tùy chọn này, các tệp .js sẽ được xử lý như CommonJS. Bạn cũng có thể sử dụng định dạng .mjs cho các tệp ESM hoặc .cjs cho các tệp CommonJS, bất kể loại của chúng.

Các phiên bản Node mà mã nguồn của bạn đã được kiểm thử trên đó. Một lựa chọn phổ biến hiện nay là "engines": {"node": ">=18"}. Đây chỉ là một cảnh báo chứ không phải lỗi; tuy nhiên, các công cụ vẫn tuân thủ quy định này và người dùng cũng thực hiện thao tác gắn (pin) đúng cách.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác