bạn có thể lưu trữ một kho lưu trữ riêng cho tổ chức của bạn để sử dụng với npm không?


219

Npm có vẻ như là một nền tảng tuyệt vời để sử dụng trong một tổ chức, tò mò liệu có thể sử dụng repo riêng, như với Nexus / Maven không. Không có gì xuất hiện trên Google :(


1
Dưới đây là tài liệu khá gọn gàng, làm thế nào để làm điều đó: clock.co.uk/tech-bloss/how-to-create-a-private-npmjs-reposeective Điều này giống như pvorb đã giải thích trong câu trả lời của anh ấy.
ramesh.mimit

2
Lưu ý rằng bài đăng clock.co.uk là bản sao hoàn chỉnh của sổ đăng ký npm. Đối với bộ đệm cục bộ của các phụ thuộc cần thiết của bạn, giải pháp tốt nhất mà tôi đã tìm thấy là npm_lazy . Tài liệu trên ngã ba của tôi có thể dễ theo dõi hơn một chút.
Jake Berger

1
Tôi biết tôi hơi muộn khi thảo luận, nhưng tôi muốn nói thêm rằng gần đây chúng tôi đã thêm hỗ trợ đăng ký npm riêng cho
Karl Harnagy

2
Như đã lưu ý bên dưới, Nexus hiện hỗ trợ các kho lưu trữ npm được lưu trữ và proxy.
Zac Thompson

8
Trong những năm qua đã có nhiều lựa chọn có sẵn. Bất cứ ai quay lại vấn đề này nên đọc tất cả các câu trả lời và không chỉ câu trả lời tôi đã chấp nhận vào năm 2011
adam

Câu trả lời:


100

Tôi không nghĩ có một cách dễ dàng để làm điều này.

Một cái nhìn tại các tài liệu NPM cho chúng ta biết, rằng có thể:

Tôi có thể chạy đăng ký riêng của mình không?

Đúng!

Cách dễ nhất là sao chép cơ sở dữ liệu đi văng và sử dụng cùng một tài liệu thiết kế (hoặc tương tự) để triển khai các API.

Nếu bạn thiết lập sao chép liên tục từ CouchDB chính thức, sau đó đặt CouchDB nội bộ của bạn làm cấu hình đăng ký, thì bạn sẽ có thể đọc bất kỳ gói được xuất bản nào, ngoài các gói riêng tư của bạn và theo mặc định sẽ chỉ xuất bản nội bộ. Nếu sau đó bạn muốn xuất bản một gói cho cả thế giới thấy, bạn chỉ cần ghi đè --registrycấu hình cho lệnh đó.

Ngoài ra còn có một hướng dẫn tuyệt vời về cách tạo kho lưu trữ npm riêng tư trong blog đồng hồ.

EDIT (2017 / 02-26):

Không thực sự mới, nhưng hiện tại đã có kế hoạch trả phí để lưu trữ các gói riêng trên NPM.

Trong những năm qua, NPM đã trở thành một nhân tố cho nhiều công ty không phải là Node.js, thông qua hệ sinh thái frontend khổng lồ được xây dựng dựa trên NPM. Nếu công ty của bạn đang chạy Sonatype Nexus để lưu trữ các dự án Java trong nội bộ, bạn cũng có thể sử dụng nó để lưu trữ các gói NPM nội bộ.

Các tùy chọn khác bao gồm JFrog ArtifactoryInedo ProGet , nhưng tôi chưa sử dụng chúng.


201

https://github.com/isaacs/npmjs.org/ : Trong phiên bản npm v1.0.26, bạn có thể chỉ định các kho lưu trữ git riêng tư như một phần phụ thuộc trong tệp pack.json của bạn. Tôi đã không sử dụng nó nhưng sẽ thích phản hồi. Dưới đây là những gì bạn cần làm:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}

Bài đăng sau đây nói về điều này: Debuggable: Các mô-đun npm riêng


3
Đó là một tính năng tuyệt vời, nhưng tôi đã chấp nhận pvorb vì tôi đã hỏi về việc lưu trữ toàn bộ repo NPM, một repo Maven nội bộ
adam

2
Lưu ý: NPM hiện không hỗ trợ chỉ định phạm vi phiên bản với các URL git này (ví dụ: 1.2.x hoặc ^ 1.2.3). github.com/npm/npm/issues/3328
Clay

@Clay, bạn có thể chỉ định một thẻ (v0.0.1), phải không?
mcha

Có, bạn có thể làm một thẻ chính xác.
Clay

Có cách nào để sử dụng các khóa triển khai GitHub để xác thực với repos riêng không?
sunknudsen

91

Có một gói npm dễ sử dụng để làm điều này. https://www.npmjs.org/package/sinopia

Tóm lại, Sinopia là một máy chủ lưu trữ npm riêng tư / bộ nhớ đệm mà bạn có thể thiết lập với cấu hình bằng không.

Sinopia có thể được sử dụng để:

  • xuất bản các gói riêng mà không để lộ ra công chúng
  • chỉ lưu trữ các gói công khai được sử dụng (không cần phải sao chép toàn bộ đăng ký công khai)
  • ghi đè các gói công khai với phiên bản sửa đổi đã được sản xuất nội bộ.

13
Sinopia dường như không còn được duy trì. Cam kết cuối cùng là hơn 8 tháng trước tính đến ngày hôm nay (7 tháng 3 năm 2016). Nó trông tuyệt vời và hoạt động tốt nhưng hãy cẩn thận xung quanh khả năng bảo trì.
Ray Booysen

45
Kiểm tra verdaccio . Đây là một nhánh được duy trì tích cực của nó: github.com/verdaccio/verdaccio
Rotareti

1
verdaccio có hỗ trợ cấu hình "chỉ riêng tư" không, nơi nó sẽ không truy vấn bất kỳ sổ đăng ký công khai nào?
MarkusSchaber

1
@MarkusSchaber Bạn có thể vô hiệu hóa proxy cho các cơ quan đăng ký khác. Nó hoạt động ở chế độ ngoại tuyến ngay cả khi proxy cố gắng truy cập vào mạng.
Juan Picado

1
Tôi thực sự điều Verdaccio xứng đáng nhận được câu trả lời của riêng mình ngày hôm nay stackoverflow.com/a/50815174/336753 Tôi thậm chí không nhận thấy bình luận ở đây đầu tiên.
kub1x

40

Verdaccio là những gì tôi đang tìm kiếm và nó xứng đáng với câu trả lời của riêng nó;) Đây là một nhánh của Sinopia được duy trì tích cực (câu trả lời được đánh giá cao ở đây ). Nó là một sổ đăng ký npm dưới dạng gói npm và có thể được tìm thấy

tại đây: https://github.com/verdaccio/verdaccio ,
tại đây: https://www.verdaccio.org ,
tại đây : pnpm i -g verdaccio, hoặc
tại đây:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
điều này! cảm ơn bạn -> docker run -it --rm --detach --name verdaccio -p 4873: 4873 verdaccio / verdaccio
mwm

1
@Modm Cảm ơn bạn. Đã thêm phiên bản docker vào danh sách.
kub1x

28

Vào ngày 14 tháng 4 (2015), các mô-đun riêng npm đã được giới thiệu.

Khi bạn trả tiền cho các mô-đun riêng, bạn có thể:

  • Lưu trữ nhiều gói riêng như bạn muốn
  • Cấp quyền truy cập đọc hoặc truy cập đọc-ghi cho các gói đó cho bất kỳ người dùng trả phí nào khác
  • Cài đặt và sử dụng bất kỳ gói nào mà người dùng trả phí khác đã cấp cho bạn đọc quyền truy cập vào
  • Cộng tác trên bất kỳ gói nào mà người dùng trả phí khác đã cấp cho bạn quyền truy cập bằng văn bản

Tất nhiên, nó không miễn phí - hiện tại là 7 đô la một tháng cho mỗi người dùng.

Và nó vẫn là một dịch vụ khá mới. Ví dụ: hỗ trợ cho các tài khoản tổ chức bị thiếu (kể từ tháng 6 năm 2015):

Hiện tại, các gói riêng chỉ có sẵn cho người dùng cá nhân, nhưng sắp có hỗ trợ cho các tài khoản tổ chức. Trong thời gian này, vui lòng tạo người dùng cho tổ chức của bạn và chúng tôi có thể nâng cấp nó lên một tổ chức khi có hỗ trợ tại đây.

Vì vậy, trong khi không hoàn hảo, đó là giải pháp npm chính thức để duy trì các gói riêng tư và chính điều đó làm cho nó đáng được đề cập.

CẬP NHẬT

Gói riêng của Npm hiện có sẵn, với các gói cho cả người dùng và tổ chức cá nhân :

  • Không giới hạn số lượng gói công khai & riêng tư
  • $ 7 / tháng / nhà phát triển
  • Bao gồm một tên phạm vi, dựa trên tên tổ chức
  • Xuất bản và kiểm soát quyền truy cập vào @ org-name / foo

(từ chối trách nhiệm: thậm chí không liên kết từ xa dưới bất kỳ hình thức nào với npm, Inc. )


20

Người quản lý kho lưu trữ với sự hỗ trợ cho các cơ quan đăng ký npm tư nhân:


4
Chỉ các phiên bản trả phí hỗ trợ kho npm; phiên bản miễn phí thì không.
Boon

12
Phiên bản miễn phí của Sonatype Nexus 3.0, trên thực tế, hỗ trợ repos npm (cùng với repos bower và docker).
n8n8baby

10

Tôi đoán chủ đề này cần một bản cập nhật. Nếu bạn nhìn vào bất kỳ đăng ký npm nào có sẵn, chúng cực kỳ nặng và chúng cần couchdb. Gemfurry và những người khác cần bạn tách ra khỏi repos công khai. Một số npm như bóng-npm không có cam kết gần đây .

Sau đó, chúng tôi tìm thấy Reggie . Nó có một hoạt động cam kết tốt, cực kỳ dễ cài đặt và sử dụng và có sự hỗ trợ cộng đồng khá tốt . Nó rất nhẹ và bạn không phải đối phó với couchdb, v.v.


9

Hãy tha thứ cho tôi nếu tôi không hiểu rõ câu hỏi của bạn, nhưng đây là câu trả lời của tôi:

Bạn có thể tạo một mô-đun npm riêng và sử dụng các lệnh thông thường của npm để cài đặt nó. Hầu hết người dùng node.js sử dụng git làm kho lưu trữ của họ, nhưng bạn có thể sử dụng bất kỳ kho lưu trữ nào phù hợp với mình.

  1. Trong dự án của bạn, bạn sẽ muốn bộ xương của gói NPM. Hầu hết các mô-đun nút có kho git nơi bạn có thể xem cách chúng tích hợp với NPM (tệp pack.json, tôi tin là một phần của trang này và trang web của NPM chỉ cho bạn cách tạo gói npm)
  2. Sử dụng một cái gì đó giống với Make để thực hiện và tarball gói của bạn có sẵn từ internet hoặc mạng của bạn để thực hiện gói tải xuống cho npm cài đặt.
  3. Khi gói của bạn được thực hiện, sau đó sử dụng

    cài đặt npm * tarball_url *


5
Bạn không có câu hỏi của anh ấy, nhưng câu trả lời rất hữu ích cho tôi! :)
Eduardo Costa

7

Đây là cách dễ nhất mà tôi biết - lưu trữ nó trên đám mây với sổ đăng ký npm riêng của Gemfury .

Nó miễn phí và bạn có thể đăng nhập bằng tài khoản Github của mình. Nó sẽ giúp bạn tiết kiệm rất nhiều thời gian, so với việc thiết lập cơ sở dữ liệu của riêng bạn.


nó không miễn phí tho.
I.Tyger

6

chúng tôi đang sử dụng Nexus Sonatype, phiên bản là Trình quản lý kho lưu trữ NexusOSS 3.6.1-02. Và tôi chắc chắn rằng nó hỗ trợ kho lưu trữ riêng NPM và lưu trữ gói.

nhập mô tả hình ảnh ở đây


5

Đến bữa tiệc muộn một chút, nhưng NodeJS (tính đến ngày 14 tháng 11 tôi đoán) hỗ trợ kho NPM của công ty - bạn có thể tìm hiểu thêm trên trang web chính thức của họ .

Từ cái nhìn lướt qua, có vẻ như npmE cho phép phản chiếu thông qua kho lưu trữ NPM - nghĩa là, nó sẽ tìm kiếm các gói trong kho NPM thực nếu nó không thể tìm thấy gói trên kho nội bộ của bạn. Có vẻ rất hữu ích!

npm Enterprise là một giải pháp tại chỗ để chia sẻ và phân phối các mô-đun JavaScript một cách an toàn trong tổ chức của bạn, từ nhóm duy trì npm và đăng ký npm công khai. Nó được thiết kế cho các đội cần:

chia sẻ nội bộ dễ dàng các mô-đun riêng kiểm soát tốt hơn việc phát triển và triển khai công việc bảo mật nghiêm ngặt hơn xung quanh việc triển khai các mô-đun nguồn mở tuân thủ các yêu cầu pháp lý để lưu trữ mã tại chỗ npmE là npm riêng

npmE là một sổ đăng ký npm hoạt động với cùng một máy khách npm tiêu chuẩn mà bạn đã sử dụng, nhưng cung cấp các tính năng cần thiết cho các tổ chức lớn hơn hiện đang nhiệt tình áp dụng nút. Nó được xây dựng bởi npm, Inc., nhà tài trợ của dự án nguồn mở npm và máy chủ của sổ đăng ký npm công cộng.

Thật không may, nó không miễn phí. Bạn có thể dùng thử, nhưng nó là phần mềm thương mại. Đây không phải là một chút tuyệt vời cho các nhà phát triển solo, nhưng nếu bạn là một nhà phát triển solo, bạn có GitHub :-)


3

Bài đăng này nói về cách thiết lập một đăng ký riêng

  • đảm bảo couchdb được cài đặt trong hệ thống của bạn
  • Sao chép npmjs.org sử dụng lệnh sau

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"

Lưu ý rằng có "continuous":truetrong lệnh, điều này sử dụng API _changes của CouchDB và sẽ lấy bất kỳ thay đổi mới nào khi API này được thông báo.

Nếu bạn muốn dừng những bản sao này, bạn có thể dễ dàng thêm vào "cancel":true. Sau đó, kịch bản sẽ là

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"

Sau đó truy cập npmjs.org readme để cài đặt npm (đảm bảo nodejsgitđược cài đặt). Thổi là tất cả các bước

git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp 
npm install couchapp 
npm install semver 
couchapp push registry/app.js http://localhost:5984/registry 
couchapp push www/app.js http://localhost:5984/registry 

1
Url isaacs.iriscouch.com/registry không may bị chết ngay bây giờ. Tôi đã thử thay đổi nó thành skimdb.npmjs.com/registry , có vẻ như hoạt động lúc đầu, nhưng nó chỉ sao chép chỉ mục đăng ký chứ không phải tarballs ...
fuzzyTew

Các couchapp bang readme rằng couchapp bây giờ kinda bị phản đối, nhưng nó cũng nói con đường hiện tại để phản ánh toàn bộ registry là sử dụng NPM-fullfat-registry
fuzzyTew

Tôi đã kết thúc bằng cách sử dụng đăng ký tĩnh cho việc này, không giống như các giải pháp couchdb không yêu cầu cấu hình nào cả.
fuzzyTew


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.