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



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



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



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



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

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"
}

Я использую следующее с частным репозиторием 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

Comments

    Ничего не найдено.