Как установить частный модуль 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
в своем частная НПМ модули добавить
"private": trueв свой пакет.json
затем, чтобы ссылаться на частный модуль в другом модуле, используйте это в своем пакете.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) папка, содержащая программу, описанную пакетом.файл 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:[email protected]/myprivate.git", } }здесь название команды = myteamname и API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4
здесь я ссылаюсь на репо bitbucket, но он почти идентичен с использованием github тоже.
наконец, в качестве альтернативы, если вы действительно не жалко заплатить $7 в месяц (на момент написания), то теперь вы можете иметь частные модули НПМ из коробки.
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). выглядит довольно солидно. Это позволяет легко публиковать модули 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... вот так
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\package.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@[email protected]/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
Comments