2012-06-27 31 views
59

Giả sử bạn muốn cài đặt thư viện lib-a có phụ thuộc dep-1dep-2. Nếu lib-a đã khai báo trong package.json của nó để sử dụng phiên bản dep-2 đã lỗi thời (giả sử nó không hoạt động trên nút 0.8.0 vừa xuất hiện), nhưng có một nhánh là dep-2 hoạt động với nút 0.8 .0 - tên chi nhánh node0.8.0.Khi cài đặt một gói với NPM, bạn có thể yêu cầu nó sử dụng một phiên bản khác của một trong các phụ thuộc của nó không?

Vì vậy, các gói trong phương trình là:

git://github.com/user-a/lib-a 
git://github.com/user-b/dep-1 
git://github.com/user-c/dep-2 
git://github.com/user-c/dep-2#node0.8.0 

Có cách nào để nói với NPM để cài đặt lib-a, nhưng sử dụng dep-2#node0.8.0 thay vì dep-2?

Với NPM bạn có thể cài đặt một chi nhánh cụ thể của một dự án như thế này:

npm install git://github.com/user-c/dep-2#node0.8.0 

Và nếu tôi được tùy chỉnh package.json của lib-a, bạn có thể nói cho nó để sử dụng dep-2#node0.8.0 như thế này:

{ 
    "name": "lib-a", 
    "dependencies": { 
    "dep-1": ">= 1.5.0", 
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0" 
    } 
} 

Bằng cách thay đổi package.json sau đó bạn có thể chạy

npm install lib-a 

và nó sẽ cài đặt chi nhánh tương thích với nút 0.8.0 dep-2. Nhưng, điều đó đòi hỏi tôi có quyền truy cập để sửa đổi lib-a, mà đối với trường hợp cụ thể của tôi thì không. Về mặt kỹ thuật, tôi có thể chia rẽ lib-a và thực hiện thay đổi ở trên đối với package.json. Nhưng trong trường hợp cụ thể của tôi, lib-a là một sự phụ thuộc của một thư viện, vì vậy tôi sẽ phải ngã ba dự án nó được tham chiếu trong, và cứ tiếp tục ...

Vậy câu hỏi là, liệu có một cách để yêu cầu NPM cài đặt lib-a và yêu cầu sử dụng chi nhánh node0.8.0 của dep-2? Một cái gì đó như thế này:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0 

Điều đó thật tuyệt vời. Nếu nó không thể, điều đó sẽ là tốt để biết vì vậy tôi có thể chuẩn bị bản thân mình để có ngã ba/tùy chỉnh chuỗi các dự án.

Trả lời

42

NPM cài đặt cú pháp:

npm install (with no args in a package dir) 
npm install <tarball file> 
npm install <tarball url> 
npm install <folder> 
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact] 
npm install [@<scope>/]<name>@<tag> 
npm install [@<scope>/]<name>@<version> 
npm install [@<scope>/]<name>@<version range> 
npm i (with any of the previous argument usage) 

vì vậy bạn có thể chọn một trong những phương pháp để cài đặt module của bạn.

Trường hợp của cách đơn giản nhất để cài đặt một phiên bản cụ thể là thế này:

npm install [email protected] 
hơn

thông tin: https://docs.npmjs.com/cli/install

+6

Dường như nếu bạn cài đặt phụ thuộc đầu tiên, sau đó các thư viện khác mà đòi hỏi sự phụ thuộc đó sẽ không tự tải xuống. Điều đó giải quyết vấn đề! Cảm ơn! –

+1

Có đúng không? Tôi đã thử npm -g install/path/to/my/fork-with-fix và sau đó npm -g install gói-which-should-use-forked-dependency-with-fix và ... nó vẫn tải phiên bản chính thức. –

+0

Hãy xem liên kết 'npm'. – knownasilya

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