Phần phụ thuộc là một đoạn mã—thư viện, mô-đun hoặc gói—mà một dự án yêu cầu để hoạt động chính xác.
Trong Node.js, phần phụ thuộc và phần phụ thuộc dev là các danh mục gói mà bạn có thể xác định trong tệp pack.json để quản lý phần phụ thuộc của dự án. Khám phá sự khác biệt của chúng và tìm hiểu cách sử dụng chúng trong các dự án của bạn.
Phụ thuộc thường xuyên trong một dự án npm
Phần phụ thuộc thông thường—hay đơn giản là phần phụ thuộc—là các gói mà ứng dụng của bạn yêu cầu để hoạt động như dự kiến trong thời gian chạy và trong môi trường sản xuất.
Phụ thuộc có thể bao gồm:
- Các thư viện bên ngoài cung cấp chức năng dựng sẵn, chẳng hạn như lodash.
- Các khung cung cấp nền tảng hoặc cấu trúc để xây dựng ứng dụng, chẳng hạn như Express hoặc React.
- Trình điều khiển cơ sở dữ liệu, chẳng hạn như MongoDB hoặc sqlite3.
- Các gói hỗ trợ các tác vụ liên quan đến mạng, chẳng hạn như Axios hoặc Socket.io.
Ví dụ: nếu bạn đang xây dựng API CRUD với Express.js, thể hiện sẽ là một trong những phần phụ thuộc của bạn vì máy chủ của bạn cần nó để hoạt động.
Để cài đặt các phụ thuộc thời gian chạy, bạn có thể sử dụng trình quản lý gói như npm, Trình quản lý gói nút hoặc Sợi.
Các phụ thuộc tồn tại dưới đối tượng phụ thuộc trong tệp pack.json. Đối tượng phụ thuộc lưu trữ tên và phiên bản của các gói.
Để cài đặt gói dưới dạng phụ thuộc bằng NPM, hãy chạy lệnh bên dưới:
npm install <package-name>
Lệnh trên cài đặt gói và đăng ký nó như một phần phụ thuộc của dự án của bạn trong gói.json:
"dependencies": {
"package-name": "^package-version",
}
Khi bạn sao chép dự án từ kho lưu trữ dựa trên web, bạn có thể cài đặt các phụ thuộc bằng cách chạy lệnh bên dưới:
npm install
Khi bạn chạy lệnh trên, trình quản lý gói của bạn sẽ đọc gói.json tệp và cài đặt các phần phụ thuộc và phần phụ thuộc dev được chỉ định từ sổ đăng ký gói.
Phụ thuộc phát triển và cách sử dụng chúng
Phần phụ thuộc phát triển—hoặc devDepenendencies—là các gói mà ứng dụng của bạn chỉ cần trong quá trình phát triển. Nói cách khác, chúng không cần thiết trong sản xuất.
devDependencies có thể bao gồm:
- Các khung thử nghiệm, chẳng hạn như Jest hoặc Mocha.
- Người chạy thử, chẳng hạn như Chai.
- Linters và formatters, chẳng hạn như Eslint.
- Các công cụ tài liệu, chẳng hạn như Swagger.
Một ví dụ phổ biến về devDepenedency là gói Nodemon, gói này sẽ khởi động lại máy chủ của bạn khi phát hiện các thay đổi trong tập lệnh của bạn.
Bạn có thể xác định devDependencies bên dưới phụ thuộc vào nhà phát triển đối tượng trong một gói.json tài liệu. Đối tượng này lưu trữ tên và phiên bản của các gói.
Bạn có thể cài đặt gói dưới dạng devDependency bằng cách chạy lệnh này:
npm install <package-name> --save-dev
Ngoài ra, bạn có thể cài đặt gói dưới dạng devDependency bằng cách chạy lệnh này:
npm install -D <package-name>
Lệnh trên cài đặt và đăng ký gói trong gói.json tập tin, như vậy:
"devDependencies": {
"package-name": "^package-version"
}
Khi bạn sao chép dự án từ kho lưu trữ dựa trên web, hãy chạy cài đặt npm lệnh cũng sẽ cài đặt devDependencies.
Tuy nhiên, chạy lệnh với sản xuất cờ chỉ cài đặt các phụ thuộc.
Ví dụ:
npm install --production
Khi bạn chạy lệnh trên, trình quản lý gói của bạn sẽ đọc gói.json tệp và cài đặt các phụ thuộc của ứng dụng của bạn từ sổ đăng ký gói.
Ngoài ra, bạn có thể đặt NODE_ENV biến thành “sản xuất” để đạt được kết quả tương tự.
Các loại phụ thuộc khác
Ngoài các phụ thuộc và devDependencies, Node.js cũng phân loại các gói thành đồng đẳng Và phụ thuộc tùy chọn.
Phụ thuộc ngang hàng
Các phụ thuộc ngang hàng là các phụ thuộc mà một gói sử dụng khi nó mong đợi một phiên bản cụ thể hoặc một phiên bản tương thích của một gói khác sẽ xuất hiện trong ứng dụng sử dụng nó.
Mục đích của các phụ thuộc ngang hàng là để đảm bảo rằng một gói hoạt động chính xác với các phụ thuộc của nó và tránh xung đột hoặc các vấn đề tương thích.
Đối với các phiên bản npm nhỏ hơn v7, các phụ thuộc ngang hàng không được cài đặt tự động. Thay vào đó, mã bao gồm gói phải bao gồm gói đó dưới dạng phần phụ thuộc. Nếu gói không bao gồm nó, npm sẽ đưa ra cảnh báo.
Chúng tồn tại dưới phụ thuộc ngang hàng đối tượng trong tệp pack.json:
"peerDependencies": {
"package": "^version"
}
Phụ thuộc tùy chọn
Phụ thuộc tùy chọn là các gói không cần thiết cho chức năng cốt lõi của dự án nhưng có thể nâng cao khả năng của dự án nếu có.
Vì các phụ thuộc tùy chọn không bắt buộc để dự án hoạt động chính xác, bạn có thể bỏ qua chúng trong khi cài đặt.
Chạy lệnh bên dưới sẽ bỏ qua các phụ thuộc tùy chọn trong quá trình cài đặt:
npm install --omit=optional
Chúng tồn tại dưới phụ thuộc tùy chọn đối tượng trong tệp pack.json:
"optionalDependencies": {
"package": "^version"
}
Các danh mục giúp quản lý các phần phụ thuộc của bạn dễ dàng hơn
Việc hiểu, quản lý và phân loại phụ thuộc một cách hiệu quả giúp đảm bảo sự tách biệt rõ ràng giữa các gói cần thiết cho quá trình sản xuất và những gói chỉ cần trong quá trình phát triển.
Sự khác biệt này hỗ trợ quản lý phụ thuộc hiệu quả, đóng gói phù hợp và triển khai hợp lý dự án của bạn.