Как установить частный модуль 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"
}
очень просто -
npm config set registry https://path-to-your-registry/
Он фактически устанавливает registry = "https://path-to-your-registry"
эту строку /Users/<ur-machine-user-name>/.npmrc
все значения, которые вы установили явно или были установлены по умолчанию, можно увидеть - npm config list