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

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

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

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

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

Ответ 1

cd somedir
npm install .

или

npm install path/to/somedir

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

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

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

Ответ 2

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

"private": true 

на ваш пакет .json

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

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

Ответ 3

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

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

Пакет:

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

Является ли npm блестящим?

Ответ 4

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

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

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

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

"private": true 

на ваш package.json

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

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

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

Здесь я ссылаюсь на битбакет репо, но он почти идентичен с помощью github тоже.

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

Ответ 5

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

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

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

Например:

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

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

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

Ответ 6

У меня была такая же проблема, и после некоторого поиска я нашел Reggie (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, либо изнутри package.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"
}

Ответ 7

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

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

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

Ответ 8

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

cd private-project
npm login

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

npm publish

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

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

Ответ 9

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

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

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

Ответ 10

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

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

Ответ 11

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

npm install github:mygithubuser/myproject

Ответ 12

Это было то, что я искал:

# Get the latest from GitHub, public repo:
$ npm install username/my-new-project --save-dev
# Bitbucket, private repo:
$ npm install git+https://token:[email protected]/username/my-new-project.git#master
$ npm install git+ssh://[email protected]/username/my-new-project.git#master

# … or from Bitbucket, public repo:
$ npm install git+ssh://[email protected]/username/my-new-project.git#master --save-dev
# Bitbucket, private repo:
$ npm install git+https://username:[email protected]/username/my-new-project.git#master
$ npm install git+ssh://[email protected]/username/my-new-project.git#master
# Or, if you published as npm package:
$ npm install my-new-project --save-dev

Ответ 13

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

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

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

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

Ответ 14

Для этой цели вы можете использовать Verdaccio, который представляет собой легкий частный реестр прокси-серверов npm, встроенный в Node.js. Также это бесплатно и с открытым исходным кодом.

Вы можете найти подробную информацию о том, как установить и запустить его на их веб-сайте, но вот шаги:

Требуется node >=8.x

    // Install it from npm globally
    npm install -g verdaccio

    // Simply run with the default configuration that will host the registry which you can reach at http://localhost:4873/
    verdaccio

    // Set the registry for your project and every package will be downloaded from your private registry
    npm set registry http://localhost:4873/

    // OR use the registry upon individual package install
    npm install --registry http://localhost:4873

Он также имеет докер, так что вы можете легко опубликовать его в общедоступном докере и, вуаля, у вас есть частный репозиторий npm, который можно распространять другим способом, как вы его настраиваете!