Cách sử dụng repo Github riêng tư như phụ thuộc npm


203

Làm cách nào để liệt kê một repo Github riêng tư như "dependency"trong package.json? Tôi đã thử các cú pháp URL Github của npm như thế nào ryanve/example, nhưng thực hiện npm installtrong thư mục gói sẽ gây ra lỗi "không thể cài đặt" cho các phụ thuộc riêng tư. Có một cú pháp đặc biệt (hoặc một số cơ chế khác) cho tùy thuộc vào repos riêng?

Câu trả lời:


284

Nó có thể được thực hiện thông qua https và oauth hoặc ssh.

https và oauth: tạo mã thông báo truy cập có phạm vi "repo" và sau đó sử dụng cú pháp này :

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

hoặc là

ssh: thiết lập ssh và sau đó sử dụng cú pháp này:

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

(lưu ý sử dụng dấu hai chấm thay vì dấu gạch chéo trước người dùng)


19
Hoặc nếu bạn đã thiết lập ssh tại github, hãy bỏ qua mã thông báo và sử dụng: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax

3
Làm thế nào để bạn luôn có nó trên phiên bản mới nhất?
SIr Codealot

25
Thêm #master vào cuối
Jasmine Hegman

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"đã không làm việc cho tôi. Đáng ngạc nhiên là chuyển đổi mã thông báo và x-oauth-basic đã thực hiện công việc. Vì vậy, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"làm việc cho tôi. xin lưu ý rằng tôi đang sử dụng gitlab chứ không phải github.
misantronic

2
Qua httpsđặt x-oauth-basicnhư tên người dùng là không cần thiết: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"làm việc là tốt.
kadam

25

Nếu ai đó đang tìm kiếm một tùy chọn khác cho Git Lab và các tùy chọn ở trên không hoạt động, thì chúng tôi có một tùy chọn khác. Để cài đặt cục bộ máy chủ Git Lab, chúng tôi đã thấy rằng cách tiếp cận bên dưới cho phép chúng tôi bao gồm gói phụ thuộc. Chúng tôi đã tạo và sử dụng mã thông báo truy cập để làm như vậy.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

Tất nhiên, nếu một người đang sử dụng khóa truy cập theo cách này, thì nó sẽ có một bộ quyền hạn chế.

Chúc may mắn!


8

Với git có định dạng https

https://github.com/equivalent/we_demand_serverless_ruby.git

Định dạng này chấp nhận người dùng + mật khẩu

https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git

Vì vậy, những gì bạn có thể làm là tạo một người dùng mới sẽ được sử dụng như một bot , chỉ thêm các quyền đủ để anh ta có thể đọc kho lưu trữ mà bạn muốn tải trong các mô-đun NPM và chỉ cần có nó trực tiếp trong packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

Trong phần Chọn Phạm vi, hãy kiểm tra repo : Kiểm soát hoàn toàn các kho riêng

Điều này là để mã thông báo có thể truy cập các repos riêng mà người dùng có thể thấy

Bây giờ hãy tạo nhóm mới trong tổ chức của bạn, thêm người dùng này vào nhóm và chỉ thêm các kho lưu trữ mà bạn muốn được kéo theo cách này (ĐỌC CHỈ cho phép!)

Bạn cần chắc chắn chỉ đẩy cấu hình này sang repo riêng

Sau đó, bạn có thể thêm phần này vào / tests.json (người dùng bot là tên người dùng, xxxxxxxxx là mã thông báo cá nhân được tạo)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


1
Vì vậy, có an toàn để cam kết mã thông báo truy cập cá nhân này và sử dụng nó trong một cái gì đó như Travis CI không?
Con Antonakos

@ConAntonakos nếu dự án là kho lưu trữ riêng của Github và bạn đã trả tiền cho Travis CI đang chạy kho lưu trữ dự án Github riêng của bạn thì có (loại này, vì bạn không chia sẻ thông tin đăng nhập của mình một cách công khai) Ngoài ra, bạn cần phải nhớ và sử dụng thông tin đăng nhập của người dùng Github mới chỉ có quyền truy cập đọc vào repo riêng này. Vì vậy, đừng sử dụng tài khoản cá nhân của bạn :) ... tạo tài khoản người dùng bot dễ khóa hơn trong trường hợp tiếp xúc;) ... Nếu bạn đang xây dựng một dự án ngân hàng, điều này sẽ không vượt qua chứng nhận ISO nên không bao giờ an toàn thậm chí không lưu mã trên GH
tương đương
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.