Tình huống sẽ là:
Tôi phát triển 2 dự án trong môi trường phát triển Node.js của mình, P1 và P2.
P1 yêu cầu phát triển hai mô-đun đơn giản, mod1 và mod2, được lưu trữ trong P1/lib
. Mỗi một trong các mô-đun này giải quyết tìm thấy các phụ thuộc bên ngoài của chúng trong P1/node_modules
. Các phụ thuộc cần thiết cho P1 đã được cài đặt trong thư mục này qua npm.
Bây giờ hình ảnh chúng tôi muốn sử dụng lại mod1 trong P2 khác, đây là những nghi ngờ của tôi xuất hiện. Tôi có thể ...
Chỉ cần sao chép mod1 vào
P2/lib
. Nhân rộng, vì vậy tôi thậm chí không xem xét tùy chọn này.Từ P2, tham chiếu mod1 từ P1 :
require($PROJECTS_DIR + '/P1/lib/mod1')
. Không phải là một lựa chọn tốt, cách này P2 sẽ phụ thuộc vào P1.Đặt mod1 vào thư mục cấp cao hơn hoặc sử dụng NODE_PATH, để P1 và P2 có thể giải quyết nó chỉ bằng cách làm
require('mod1')
. Tuy nhiên, khi triển khai, tôi cũng nên triển khai thư mục cấp cao hơn này có vẻ hơi bẩn.Tôi muốn coi mod1 là mô-đun npm, vì vậy nó có thể dễ dàng cài đặt trong mọi dự án hoặc môi trường, tuy nhiên, trong trường hợp cụ thể này, tôi không thể xuất bản mô-đun thành npm vì quá cụ thể của dự án. Tôi có thể tạo một kho npm riêng và đặt mod1 vào trong. Ý chính của việc này sẽ là thiết lập nó để được truy cập từ môi trường sản xuất. Nó có đáng không?
Điều gì về việc đặt tất cả lại với nhau
node_modules
? (depencencies bên ngoài và thư viện của riêng tôi). Điều đó sẽ rất tuyệt vì các mô-đun có thể chỉ được yêu cầu như 'Yêu cầu (' mô-đun '). Nhưng nó cũng có vẻ khá bẩn.Không chắc chắn làm thế nào
npm link
sẽ làm việc khi triển khai. Nó tạo ra một liên kết tượng trưng, không được theo dõi khi cam kết mã thông qua Git hoặc SVN. Nếu tôi chạynpm install
trong sản xuất, nó cũng sẽ cài đặt mô-đun được liên kết chứ?
Không có điều nào ở trên khá thỏa mãn tôi. Tôi không biết liệu một trong số này có phù hợp không, hoặc các bạn có đề xuất nào khác, nhưng, có cách nào ưu tiên để cấu trúc thư viện riêng để chúng có thể dễ dàng sử dụng lại trong các dự án khác không?
npm link
trong môi trường sản xuất? Hoặc là nó ẩn trongnpm install
.Bất kỳ cách nào để chỉ định nó trong pack.json?