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

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

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

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

npm install --from-git git@server:project

12 ответов


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

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

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}

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

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

пакет:

  • a) папка, содержащая программу, описанную пакетом.файл json
  • b) gzipped tarball, содержащий (a)
  • c) url-адрес, который разрешает (b)
  • d) a <name>@<version> Это опубликовано в реестре с (c)
  • e) a <name>@<tag> это указывает на (d)
  • е)<name> который имеет" последний " тег, удовлетворяющий (e)
  • g) a <git remote url> это разрешает (b)

разве npm не блестящий?


Обновление Январь 2016

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

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

в своем частная НПМ модули добавить

"private": true 

на .в JSON

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

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }

здесь название команды = myteamname и ключ API = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

здесь я ссылаюсь на репо bitbucket,но он почти идентичен с использованием github.

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


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

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

npm install -S "git+https://username@github.com/orgname/repositoryname.git"

например:

npm install -S "git+https://blesh@github.com/netflix/private-repository.git"

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

надеюсь, это поможет кто-то еще.


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

что есть... (и это только из их документов)

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

затем cd в ваш каталог модуля И...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

наконец, вы можете установить пакеты из reggie, просто используя этот url-адрес либо в прямой команде установки npm, либо из пакета.формат JSON... вот так!--7-->

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

или..

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}

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

  • NodeProjs\Apps\MainApp\пакет.в JSON

  • NodeProjs\Modules\DataModule\package.в JSON

В MainApp @ NodProjs\Apps\MainApp\

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

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

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

это сработало для моего ситуация.


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

npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"

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


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

cd private-project
npm login

в вашем пакете JSON set "name": " @username/private-project"

npm publish

затем, чтобы потребовать ваш проект:

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

Config для установки из общедоступного репозитория 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/<ur-machine-user-name>/.npmrc

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