2014-05-07 21 views
5

Tôi là một người mới tham gia npm, vì vậy, vui lòng trợ giúp.npm cài đặt từ sổ đăng ký riêng tư với dự phòng vào URL git repository

Giả sử tôi có một số mô-đun, tôi đang sử dụng kho lưu trữ git cho từng gói và tôi cũng đã cài đặt sinopia để đăng ký riêng tư. Vấn đề là chúng tôi là 2 đội. Một nhóm trong một thành phố và một nhóm khác ở cuối thế giới. Trong nhóm của tôi, tôi đã cài đặt đăng ký riêng tư để có sẵn trong mạng cục bộ. Vấn đề ở đây là khi chúng tôi thúc đẩy git, nhóm khác không có đăng ký riêng của riêng họ và ngay cả khi họ đã cần họ xuất bản từng phiên bản của từng mô-đun trong đăng ký riêng tư của họ. Ngoài ra một vấn đề khác là chúng tôi không thể (và không muốn) làm cho máy chủ sinopia công khai thông qua IP.

Bây giờ câu hỏi là: Làm cách nào chúng tôi có thể định cấu hình package.json/npm để quản lý các phụ thuộc từ cả đăng ký riêng tư (nếu đăng ký phản hồi) và kho git (nếu đăng ký riêng không phản hồi - hay không) không tồn tại -).

Tôi biết rằng chúng tôi có thể thiết lập từng phụ thuộc để tham chiếu đến thẻ git/nhánh/cam kết nhưng chúng tôi cũng muốn sử dụng đăng ký nếu có thể.

CẬP NHẬT

Vì vậy, về cơ bản tôi sẽ cần một package.json đó sẽ biết rằng nếu phần này không thành công:

"dependencies": { 
    "app.core": "0.1.1" 
} 

vì registry tin không được cài đặt hoặc không có sẵn, nó có thể vẫn tải phụ thuộc từ một cái gì đó như thế này:

"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 

Cũng lưu ý rằng tôi muốn cái gì đó có thể được đẩy trong kho git để không phải một trong các nhóm nên thay đổi package.json cục bộ.

Hy vọng rằng ai đó có thể trợ giúp.

+0

Nhiều đăng ký chưa được thực hiện. Xem [this] (https://github.com/npm/npm/issues/1401) để được trợ giúp. – user568109

+0

@ user568109 Cảm ơn bạn nhưng đây không phải là những gì tôi cần. Tôi cần phải có một đăng ký riêng và nếu người đó không tồn tại thì các phụ thuộc sẽ được cài đặt từ kho lưu trữ "git + ssh: //[email protected]/xxx/yyy.git#000" – helly0d

+0

@ user568109 tôi đã cập nhật câu hỏi để làm cho nó rõ ràng hơn những gì tôi cố gắng đạt được. – helly0d

Trả lời

1

Cách duy nhất mà tôi tìm thấy để làm việc cho thời điểm này là phải có một package.json như thế này:

"scripts": { 
    "postinstall" : "node fallbackDependencies.js" 
} 
"dependencies": { 
    "app.core": "git+ssh://[email protected]:group/app-core.git#v0.1.1" 
}, 
"optionalDependencies": { 
    "app.core": "0.1.1" 
} 

Và trong file fallbackDependencies.js chạy một kịch bản mà sẽ đưa tất cả các phụ thuộc từ gói. json cũng nằm trong số optionalDependencies và cho mỗi người trong số họ kiểm tra xem có thư mục có tên đó trong thư mục node_modules hay không. Nếu không có thư mục nào thì hãy chạy npm install <json.dependencies[x]>.

Đây là giải pháp tạm thời duy nhất mà tôi có thể nghĩ đến.

Nếu ai đó có cách tiếp cận tốt hơn, vui lòng trả lời.

Các vấn đề liên quan