2012-03-03 36 views
8

Tôi đang cố gắng cài đặt node-gitteh làm phụ thuộc qua npm install đọc từ package.json. Thật không may, gói npm này bị hỏng trong nút 0.6.x, nhưng không có vấn đề gì vì có một repo được chia đôi để sửa lỗi (https://github.com/hughsk/node-gitteh.git).npm cài đặt git chia đôi với submodule

Bây giờ vấn đề là repo chia hai này có một submodule, vì vậy nếu tôi cố gắng tải về tar từ github trong package.json:

, "dependencies" : { 
    "gitteh" : "https://github.com/hughsk/node-gitteh/tarball/master" 
} 

tôi nhận được một lỗi mà tương đương với "thư mục submodule không tìm thấy" . Nếu tôi sao chép cùng một repo bằng tay và làm một đệ quy submodule đệ quy và một npm install từ thư mục node-gitteh, nó hoạt động tốt, nhưng tôi không thể tìm ra cách để có được npm để làm điều này.

Trả lời

1

Tôi đã có cùng một vấn đề và cho đến nay đã chỉ dựa vào nhân bản mô-đun của tôi vào node_modules và thực hiện cập nhật submodule theo cách thủ công. Sẽ thật tuyệt khi có npm xử lý tự động.

Trong package.json có một lĩnh vực kịch bản (xem npm docs) Vì vậy, có thể làm

"scripts":{"preinstall": "git submodule update -i -r"} 

Xem https://github.com/isaacs/octave-test cho một ví dụ về điều này.

+1

npm không sao chép '.gitmodules', do đó sẽ chỉ hoạt động cục bộ: ( –

+0

Trong trường hợp của tôi npm xảy ra để cho tôi một .gitmodules, nhưng vẫn chưa đủ nếu không có tệp .git cho tôi biết phiên bản nào cài đặt. :( – Steve

+0

Tôi giữ tập tin '.gitmodules', nhưng đó là nó. Không có siêu dữ liệu git nào khác đi xuống và các thư mục con chỉ không hiển thị. – Chev

-2

Theo the docs, bạn cần cung cấp url git ở định dạng đặc biệt. Ngoài ra, nó cần phải trỏ đến git repo (cùng một địa chỉ bạn sẽ sử dụng cho git clone), không phải là tarball được cung cấp bởi github.

Trong trường hợp của bạn (git trên https), nó sẽ là:

, "dependencies" : { 
    "gitteh" : "git+https://github.com/hughsk/node-gitteh" 
} 

Sử dụng này, NPM sẽ mặc định là chi nhánh tổng thể.

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