2014-04-28 38 views
33

Tôi đã một module gọi là 'cánh buồm-Mongo' và tôi muốn cập nhật lên phiên bản mới nhất bằng cách sử dụng lệnh sau:NPM cài đặt không cài đặt phiên bản mới nhất trên GitHub

npm update sails-mongo --save 

Tôi cũng đã cố gắng gỡ bỏ cài đặt sau đó cài đặt lại . Tôi đã thử [email protected][email protected].

Vấn đề: Phiên bản hiện tại (chủ) trên GitHub các package.json (https://github.com/balderdashy/sails-mongo/blob/master/package.json) tập tin có:

"dependencies": { 
    "async": "~0.2.9", 
    "lodash": "~2.4.1", 
    "mongodb": "1.4.2", 
    "waterline-errors": "~0.10.0" 
}, 

Và trong một sự đang được cập nhật

"dependencies": { 
    "async": "0.2.10", 
    "underscore": "1.5.2", 
    "underscore.string": "2.3.3", 
    "mongodb": "~1.3.23" 
}, 

Các cách duy nhất tôi nhận được chi nhánh tổng thể được sử dụng lệnh npm install git+https://github.com/balderdashy/sails-mongo

Tại sao không [email protected] cài đặt chi nhánh chính?

+7

Vì NPM không cài đặt từ Github, nó cài đặt từ [NPM] (https://www.npmjs.org/package/sails). Khóa 'repository' trong' package.json' chỉ xác định một kho lưu trữ hiển thị trên trang NPM. –

+0

+1 nhưng không chắc chắn tôi đã nhận được bạn, hãy để tôi hỏi nó một cách khác nhau: làm thế nào để NPM biết phiên bản để cài đặt? – user2867106

+2

Các gói được xuất bản cho NPM độc lập với Github. Khi nhà phát triển xuất bản gói, nó sẽ lấy số phiên bản từ 'package.json'. NPM lưu trữ từng thứ giống như Github. Khi bạn chạy NPM cài đặt , nó sẽ luôn cài đặt phiên bản mới nhất, nhưng nếu bạn chỉ định gói trong 'package.json', bạn có thể thêm phiên bản bạn muốn cài đặt. –

Trả lời

42

Theo mặc định, phụ thuộc NPM được lấy từ kho lưu trữ NPM. Tác giả phải tải lên phiên bản phần mềm mới theo cách thủ công lên kho lưu trữ NPM, do đó phiên bản "@latest" của mã được lưu trữ trên NPM khác với phiên bản mới nhất của mã tồn tại ở bất kỳ đâu (ví dụ: trên GitHub).

Theo kho lưu trữ của NPM info page on Sails, phiên bản được lưu trữ trên NPM mới nhất là 0.9.16 trong khi current GitHub version0.10.0-rc3.

Nếu bạn muốn dự án của bạn phụ thuộc vào một nhánh cụ thể hoặc cam kết của một repo Git cụ thể (thay vì phiên bản được lưu trữ trên kho lưu trữ NPM), các nhà phát triển NPM đã bao gồm một cơ chế rõ ràng để cho phép điều này, chi tiết trong "Git URLs as Dependencies" trong package.json docs:

Git URL như Dependencies

url Git có thể có dạng:

git://github.com/user/project.git#commit-ish 
git+ssh://[email protected]:project.git#commit-ish 
git+ssh://[email protected]/project.git#commit-ish 
git+http://[email protected]/project/blah.git#commit-ish 
git+https://[email protected]/project/blah.git#commit-ish 

commit-ish có thể là bất kỳ thẻ, sha hoặc chi nhánh nào có thể được cung cấp làm đối số cho git checkout. Giá trị mặc định là master.

Trong thực tế, nó dễ dàng hơn để vẫn use a Github.com repo như một sự phụ thuộc:

Tính đến phiên bản 1.1.65, bạn có thể tham khảo các url GitHub như chỉ "foo": "user/foo-project".Ví dụ:

{ 
    "name": "foo", 
    "version": "0.0.0", 
    "dependencies": { 
    "express": "visionmedia/express" 
    } 
} 

Vì vậy, để sử dụng repo Sails GitHub, chỉ cần sử dụng:

"dependencies": { 
    "sails": "balderdashy/sails-mongo", 
    ... 
} 

Và để sử dụng tình trạng chính xác của Sails như nó tồn tại trên GitHub như của ngày 28 tháng 4 2014 , sử dụng:

"dependencies": { 
    "sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48", 
    ... 
} 
+1

Vì vậy, thực sự không có cách nào để cài đặt '' 'bản phát hành ổn định mới nhất'' mà không cần đến github mọi lúc và đặc biệt kiểm tra xem bản phát hành/nhánh/etc nào. bạn cần? – Andrey

+0

@Andrey Bạn có thể không chỉ sử dụng nhánh chính của repo cho phiên bản ổn định mới nhất không? Nếu người bảo trì repo tiếp tục tạo ra các nhánh mới và chuyển nhánh nào có phiên bản mới nhất, thì có, bạn cần phải theo kịp với trình vỏ của trình bảo trì của nhánh nào mới nhất. – apsillers

+0

Không phải lúc nào, tức là '' 'npm install github: jquery/jquery-ui''' cài đặt phiên bản mới nhất có sẵn (https://github.com/jquery/jquery-ui/releases) ... – Andrey

1

Tôi gặp sự cố tương tự. Thông qua Registry NPM Tôi đã cố gắng để có được mới nhất từ ​​một dự án tôi đã thấy trong trong GitHub, như thế này:

//package.json 
"devDependencies": { 
    "foo-package": "^3.3.0", 
} 

Nhưng đoạn code tôi đã trở lại từ npm install (như quan sát thấy trong thư mục node_modules/) không phải là những gì tôi đã thấy trong nhánh chính của kho lưu trữ GitHub. Tôi đã nhầm lẫn; vì hai người không phù hợp.

tôi cuối cùng đã tìm thấy: https://docs.npmjs.com/cli/view, mà tiết lộ một số thông tin (phiên bản và ngày tháng) về những gì NPM Registry là nhận thức cho một kho lưu trữ cụ thể.

// Console example 
npm view foo-package 

Sau khi xác nhận rằng những gì tôi muốn từ chi nhánh tổng kho của GitHub đã không có trong NPM Registry, tôi cuối cùng đã thay đổi cách tiếp cận của tôi Git URLs as Dependencies, cũng giống như @apsillers câu trả lời.

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