чи можете ви розмістити приватне сховище, яке ваша організація може використовувати з npm?


220

Npm звучить як чудова платформа для використання в організації, цікаво, якщо можливе приватне репо, як, наприклад, Nexus / Maven. У Google нічого не з’являється :(


1
Нижче наведено досить акуратну документацію, як це зробити: clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repository Це те саме, що pvorb пояснив у своїй відповіді.
ramesh.mimit

2
Зауважте, що публікація clock.co.uk є повним дублікатом реєстру npm. Для локального кешу потрібних залежностей найкращим рішенням, яке я знайшов, є npm_lazy . Документ на моїй вилці може бути дещо простішим.
Джейк Бергер

1
Я знаю, що я трохи запізнююся на дискусію, але хотів би лише додати, що нещодавно ми додали підтримку приватного реєстру npm до нашого (безкоштовного) продукту ProGet
Karl Harnagy

2
Як зазначалося нижче, Nexus тепер підтримує репост хостів і проксі-серверів.
Zac Thompson

8
З роками стало багато варіантів. Хто - небудь повернуся до цього повинен прочитати всі відповіді , а не тільки один я прийняв в 2011 році
адам

Відповіді:


101

Я не думаю, що існує простий спосіб зробити це.

Погляд на документацію НПМ говорить нам, що це можливо:

Чи можу я запустити власний приватний реєстр?

Так!

Найпростіший спосіб - копіювати базу даних дивана, а також використовувати той же (або подібний) дизайн-документ для реалізації API.

Якщо ви встановите безперервну реплікацію з офіційного CouchDB, а потім встановите свій внутрішній CouchDB як конфігурацію реєстру, тоді ви зможете читати будь-які опубліковані пакети, крім ваших приватних, і за замовчуванням публікуватиметься лише всередині країни. Якщо ви хочете опублікувати пакет для побачення всього світу, ви можете просто змінити --registryконфігурацію для цієї команди.

У блозі годинника також є чудовий підручник щодо створення приватного сховища npm .

EDIT (2017-02-26):

Насправді не новий, але зараз є платні плани розміщення приватних пакетів на NPM.

Протягом багатьох років NPM став фактором для багатьох компаній, що не є Node.js, завдяки величезній екосистемі, яка будується на NPM. Якщо у вашій компанії вже працює Sonatype Nexus для внутрішнього розміщення проектів Java, ви також можете використовувати її для розміщення внутрішніх пакетів NPM.

Інші варіанти включають в себе JFrog Artifactory та Inedo ProGet , але я не використовував їх.


201

https://github.com/isaacs/npmjs.org/ : У npm версії v1.0.26 ви можете вказати приватні URL-адреси сховищ git як залежність у файлах пакета.json. Я не користувався цим, але дуже хотів би отримати зворотній зв'язок. Ось що вам потрібно зробити:

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

Наступний пост розповідає про це: Налагодження: Приватні модулі npm


3
Це відмінна особливість, але я прийняв pvorb's, тому що я питав про розміщення цілого репо-NPM, а-ля внутрішнього репорта Maven
adam

2
Примітка: NPM в даний час не підтримує вказівку діапазону версій з цими URL-адресами git (наприклад, 1.2.x або ^ 1.2.3). github.com/npm/npm/isissue/3328
Глина

@Clay, ви можете вказати тег (v0.0.1), правда, правда?
mcha

Так, ви можете зробити точний тег.
Глина

Чи існує спосіб використання ключів розгортання GitHub для аутентифікації приватних репост?
sunknudsen

91

Для цього є простий у використанні пакет npm. https://www.npmjs.org/package/sinopia

У двох словах, Sinopia є приватним сервером сховищ npm / кешування, який можна налаштувати з нульовою конфігурацією.

Синопію можна використовувати для:

  • публікувати власні приватні пакети, не піддаючи їх публіці
  • кешуйте лише загальнодоступні пакунки, які використовуються (не потрібно повторювати весь публічний реєстр)
  • замінити загальнодоступні пакети з модифікованою версією, які були вироблені всередині країни.

13
Синопія, схоже, більше не підтримується. Останній обмін відбувся понад 8 місяців тому станом на сьогодні (7 березня 2016 року). Це виглядає чудово і працює добре, але будьте обережні щодо ремонту.
Рей Буйсен

45
Перевірте вердаччо . Це активно підтримується вилка: github.com/verdaccio/verdaccio
Rotareti

1
чи підтримує verdaccio конфігурацію "лише для приватних осіб", де вона не запитує жодного публічного реєстру?
MarkusSchaber

1
@MarkusSchaber Ви можете відключити проксі-сервер до інших реєстрів. Він працює в автономному режимі, навіть якщо проксі намагається отримати доступ до мережі.
Хуан Пікадо

1
Я дійсно заслуговує на те, що Вердаччо заслуговує на власну відповідь сьогодні stackoverflow.com/a/50815174/336753 Я навіть спочатку тут не помітив коментарів.
kub1x

40

Verdaccio є те , що я шукав, і він заслуговує свій власний відповідь;) Це активно підтримується розвилка Синоп (високо upvoted відповідь тут ). Це реєстр npm як пакет npm , і його можна знайти

тут: https://github.com/verdaccio/verdaccio ,
тут: https://www.verdaccio.org ,
тут: pnpm i -g verdaccioабо
тут:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
це! дякую -> docker run -it --rm --detach --name verdaccio -p 4873: 4873 verdaccio / verdaccio
mwm

1
@mwm Дякую До списку додана версія докера.
kub1x

28

14 квітня (2015) були представлені приватні модулі npm .

Оплачуючи приватні модулі, ви можете:

  • Розмістіть скільки завгодно приватних пакетів
  • Надайте доступ для читання або запису для читання-запису для цих пакетів будь-якому іншому користувачеві з оплатою
  • Встановіть і використовуйте будь-які пакунки, до яких інші користувачі, які платять, дали вам доступ для читання
  • Співпрацюйте над будь-якими пакунками, до яких інші користувачі, які платять, дали вам письмовий доступ

Звичайно, це не безкоштовно - зараз 7 доларів на місяць, на кожного користувача.

І це все ще досить нова послуга. Наприклад, відсутня підтримка облікових записів організації (станом на червень 2015 року):

Наразі приватні пакети доступні лише для окремих користувачів, але незабаром буде підтримка облікових записів організації. Не соромтеся тим часом створити користувача для вашої організації, і ми можемо оновити її до організації, коли тут буде підтримка.

Тож, хоча це не ідеально, це офіційне рішення npm для підтримки приватних пакетів, і саме по собі це варто згадати.

ОНОВЛЕННЯ

Приватні пакети Npm тепер доступні з планами як для окремих користувачів, так і для організацій :

  • Необмежена кількість державних та приватних пакетів
  • $ 7 / місяць / розробник
  • Включає одне ім'я області, засноване на назві організації
  • Публікуйте та контролюйте доступ до @ org-name / foo

(відмова від відповідальності: навіть віддалено не пов’язана жодним чином з npm, Inc. )


20

Менеджери сховищ із підтримкою приватних npm-реєстрів:


4
Лише платні версії підтримують npm-сховища; безкоштовних версій немає.
Бун

12
Безкоштовна версія Sonatype Nexus 3.0 насправді підтримує npm repos (разом з репортажами доуера та докера).
n8n8baby

10

Я думаю, що цей потік потребує оновлення. Якщо ви подивитеся на будь-який із наявних реєстрів, що є в наявності, вони дуже важкі і їм потрібен couchdb. Gemfurry та інші потребують, щоб ви відключилися від громадських репостів. Деякі з npm подібні shadow-npm не мають останніх змін .

Потім ми знайшли Реджі . Вона отримала хорошу активність у вчиненні, надзвичайно проста в установці та використанні та має досить гарну підтримку громади . Його надзвичайно легкий вага, і вам не доведеться мати справу з couchdb тощо.


9

Пробачте, якщо я не добре зрозумів ваше запитання, але ось моя відповідь:

Ви можете створити приватний модуль npm та використовувати звичайні команди npm для його встановлення. Більшість користувачів node.js використовують git як своє сховище, але ви можете використовувати все, що працює для вас.

  1. У своєму проекті ви захочете скелет пакету NPM. Більшість модулів вузлів мають сховища git, де ви можете подивитися, як вони інтегруються з NPM (файл package.json, я вважаю, це частина цього, і веб-сайт NPM показує вам, як зробити пакет npm)
  2. Використовуйте щось подібне, щоб зробити, щоб зробити ваш тарбол доступним в Інтернеті чи мережі, щоб встановити його для завантаження npm для завантаження.
  3. Як тільки ваш пакет зроблений, тоді використовуйте

    npm встановити * tarball_url *


5
Ви не отримали його запитання, але відповідь дуже корисна для мене! :)
Едуардо Коста

7

Це найпростіший спосіб, який я знаю - розмістити його в хмарі з приватним реєстром npm Gemfury .

Це безкоштовно, і ви можете увійти за допомогою свого облікового запису Github. Це має заощадити багато часу в порівнянні зі створенням власної бази даних.


це не вільне тхо.
І.Тигер

6

ми використовуємо Nenatus Sonatype, версія - Nexus Repository ManagerOSS 3.6.1-02. І я впевнений, що він підтримує приватне сховище NPM і кешує пакет.

введіть тут опис зображення


5

Трохи запізнюємось на вечірку, але NodeJS (станом на ~ 14 листопада) підтримує корпоративні сховища NPM - ви можете дізнатися більше на їх офіційному сайті .

З короткого погляду видно, що npmE дозволяє відображати дзеркальне відображення сховища NPM - тобто, він буде шукати пакети в реальному сховищі NPM, якщо він не може знайти його у вашому внутрішньому. Здається, дуже корисно!

npm Enterprise - локальне рішення для безпечного обміну та розповсюдження модулів JavaScript у вашій організації, від команди, яка підтримує npm та публічного реєстру npm. Він призначений для команд, які потребують:

простий внутрішній обмін приватними модулями, кращий контроль над розробкою та розгортанням суворіший захист робочого процесу навколо розгортання модулів з відкритим кодом, дотримання законних вимог до хост-коду локальних npmE є приватним npm

npmE - це реєстр npm, який працює з тим самим стандартним клієнтом npm, який ви вже використовуєте, але надає функції, необхідні більшим організаціям, які зараз із захопленням приймають вузол. Він побудований компанією npm, Inc., спонсором проекту npm з відкритим кодом та господарем публічного реєстру npm.

На жаль, це не безкоштовно. Ви можете отримати пробну версію, але це комерційне програмне забезпечення. Це не дуже чудовий біт для розробників соло, але якщо ви соло розробник, у вас є GitHub :-)


3

Цей пост розповідає про те, як налаштувати приватний реєстр

  • переконайтеся, що couchdb встановлений у вашій системі
  • Реплікація npmjs.org використовує таку команду

    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"

Зауважте, що "continuous":trueв команді є, це використовує _changes API CouchDB і буде тягнути будь-які нові зміни, коли про це API буде повідомлено.

Якщо ви хочете зупинити ці реплікації, ви можете легко додати їх "cancel":true. Тоді сценарій був би

    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"

Потім перейдіть до npmjs.org ридми встановити НПМ (переконайтеся , nodejsі gitвстановлений). Удар - всі кроки

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 на жаль померла. Я спробував змінити його на skimdb.npmjs.com/registry , який, здається, спочатку працює, але він реплікує лише індекс реєстру, а не
тарболи

У програмі couchapp readme зазначається, що couchapp тепер якось застарілий, але він також говорить, що поточний спосіб відображення всього реєстру полягає у використанні npm-fullfat-
register

Для цього я застосував статичний реєстр , який, на відміну від рішень couchdb, зовсім не вимагає конфігурації.
fuzzyTew


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.