Как установить частный модуль NPM без моего собственного реестра?

Я взял общий код и поместил его в модуль NPM, который я не хочу загружать в центральный реестр. Вопрос в том, как мне установить его из других проектов?

Очевидным способом, вероятно, является создание моего собственного реестра NPM, но, согласно документации, это связано с множеством хлопот.

Могу ли я просто установить модуль NPM, который находится на локальной файловой системе или, возможно, даже с git?

npm install --from-git [email protected]:project 

 cd somedir npm install . 

или

 npm install path/to/somedir 

somedir должен содержать package.json внутри него.

Он знает о git тоже:

 npm install git://github.com/visionmedia/express.git 

В ваших частных модулях npm добавьте

 "private": true 

к вашему пакету.json

Затем, чтобы ссылаться на частный модуль в другом модуле, используйте это в своем package.json

 { "name": "myapp", "dependencies": { "private-repo": "git+ssh://[email protected]:myaccount/myprivate.git#v1.0.0", } } 

Могу ли я просто установить пакет NPM, который находится на локальной файловой системе или, возможно, даже с git?

Да, ты можешь! Из документов https://docs.npmjs.com/cli/install

Пакет:

  • a) папку, содержащую программу, описанную в файле package.json
  • б) архивированный архив, содержащий (а)
  • c) URL-адрес, который разрешает (b)
  • d) a @ которая публикуется в реестре с (c)
  • e) a @ , указывающий на (d)
  • f) a которое имеет «последний» тег, удовлетворяющий (e)
  • g) a который разрешает (b)

Разве npm не shiny?

Обновление января 2016 года

В дополнение к другим ответам иногда возникает сценарий, в котором вы хотите иметь частные модули, доступные в командном контексте.

И Github, и Bitbucket поддерживают концепцию создания командного ключа API . Этот ключ API можно использовать в качестве пароля для выполнения запросов API в качестве этой команды.

В ваших частных модулях npm добавьте

 "private": true 

к вашему пакету.json

Затем, чтобы ссылаться на частный модуль в другом модуле, используйте это в своем package.json

  { "name": "myapp", "dependencies": { "private-repo": "git+https://myteamname:[email protected]/myprivate.git", } } 

где имя команды = myteamname , а API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

Здесь я ссылаюсь на repository bitbucket, но он почти идентичен с помощью github.

Наконец, в качестве альтернативы, если вы действительно не против платить 7 долларов в месяц (с момента написания), вы можете теперь иметь частные модули NPM из коробки.

FWIW: У меня были проблемы со всеми этими ответами при работе с репозиторием частной организации.

Следующие работали для меня:

 npm install -S "git+https://[email protected]/orgname/repositoryname.git" 

Например:

 npm install -S "git+https://[email protected]/netflix/private-repository.git" 

Я не совсем уверен, почему другие ответы не помогли мне в этом случае, потому что это то, что я пробовал, прежде чем я ударил Google и нашел этот ответ. И другие ответы – это то, что я делал в прошлом.

Надеюсь, это поможет кому-то другому.

У меня была такая же проблема, и после некоторых поисков я нашел Реджи ( https://github.com/mbrevoort/node-reggie ). Он выглядит довольно прочным. Это позволяет упростить публикацию модhive NPM на частных серверах. Не идеальный (без аутентификации при установке), и он все еще очень молод, но я тестировал его локально, и, похоже, он делает то, что он говорит, что он должен делать.

Это … (и это только из их документов)

 npm install -g reggie reggie-server -d ~/.reggie 

затем cd в каталог вашего модуля и …

 reggie -u http:// publish reggie -u http://127.0.0.1:8080 publish 

наконец, вы можете устанавливать пакеты из reggie, просто используя этот url либо в прямой команде установки npm, либо из пакета package.json … так

 npm install http:///package// npm install http:///package/foo/1.0.0 

или..

 dependencies: { "foo": "http:///package/foo/1.0.0" } 

Структурируйте свой код доступным способом, как показано ниже. Если это возможно для вас.

  • NodeProjs \ Apps \ MainApp \ package.json

  • NodeProjs \ Modules \ DataModule \ package.json

В пределах MainApp @ NodProjs \ Apps \ MainApp \

 npm install --S ../../Modules/DataModule 

Возможно, вам потребуется обновить package.json как:

  "dependencies": { "datamodule": "../../Modules/DataModule" } 

Это сработало для моей ситуации.

Начиная с ответа arcseldon , я обнаружил, что имя команды было необходимо в URL-адресе следующим образом:

 npm install --save "git+https://[email protected]@bitbucket.org/myteamname/myprivate.git" 

Обратите внимание, что ключ API доступен только для команды, а не для отдельных пользователей.

Npm теперь предоставляет неограниченные частные размещенные модули за $ 7 / пользователь / месяц, используемые так

 cd private-project npm login 

в вашем пакете json установите "name": " @username/private-project"

 npm publish 

затем потребовать свой проект:

 cd ../new-project npm install --save @username/private-project 

Конфигурация для установки из публичного репозитория Github, даже если машина находится под брандмауэром:

 dependencies: { "foo": "https://github.com/package/foo/tarball/master" } 

Я использую следующее с частным репозиторием github:

 npm install github:mygithubuser/myproject 

Очень просто –

 npm config set registry https://path-to-your-registry/ 

Он фактически устанавливает registry = "https://path-to-your-registry" этой строки в /Users//.npmrc

Все значения, которые вы установили явно или были установлены по умолчанию, можно увидеть в npm config list

  • Как изменить название пакета Android Project в Eclipse?
  • Импорт двух функций с одинаковым именем с помощью roxygen2
  • Как мне обращаться с «пакетом ххх» не доступно (для R версии xyz)? Предупреждение?
  • Android: Как передать объект Parcelable в цель и использовать getParcelable метод bundle?
  • исключение в ошибке инициализации
  • Как проверить, установлен ли Facebook Android
  • В чем разница между --save и -save-dev?
  • Как получить имя пакета из любого места?
  • inst и extdata в R Packaging
  • Что такое соглашение для разделителя слов в именах пакетов Java?
  • Как установить пакет R из исходного кода?
  • Давайте будем гением компьютера.