Как установить пакет npm непосредственно из GitHub?

попытка установить модули из GitHub приводит к:

ошибка ENOENT на пакете.формат JSON.

легко воспроизводится с помощью express:

npm install https://github.com/visionmedia/express выбрасывает ошибку.

npm install express строительство.

почему я не могу установить из github?

вот вывод консоли:

npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0

13 ответов


, потому что https://github.com/visionmedia/express - это URL веб-страницы, а не модуля npm. Используйте этот аромат:

git+https://[email protected]/visionmedia/express.git

или этот аромат, если вам нужен SSH:

git+ssh://[email protected]/visionmedia/express.git

вы также можете сделать npm install visionmedia/express для установки с Github

или

npm install visionmedia/express#branch

существует также поддержка установки непосредственно из Gist, Bitbucket, Gitlab и ряда других специализированных форматов. Посмотри npm install документация для них все.


Если Git не установлен, мы можем попробовать

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master

там же npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH} использовать другую ветку.


обновление сентябрь 2016

установка из vanilla https GitHub URLs теперь, похоже, работает:

npm install https://github.com/fergiemcdowall/search-index.git

EDIT: есть несколько пользователей, комментирующих, что вы не можете сделать это для всех модулей, потому что Вы читаете из системы управления версиями, которая вполне может содержать недопустимый/несжатый/багги-код. Поэтому, чтобы быть ясным (хотя это должно идти само собой):учитывая, что код в репо находится в состоянии, пригодном для использования npm, теперь вы можете вполне счастливо установить непосредственно из GitHub


текущий верхний ответ Питера Лайонса не имеет отношения к последним версиям NPM. Например, использование той же команды, которая была критикована в этом ответе, теперь в порядке.

$ npm install https://github.com/visionmedia/express

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


методы покрыты довольно хорошо теперь в документация по установке npm а также многочисленные другие ответы здесь.

npm install git+ssh://[email protected]:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git>[#semver:^x.x]
npm install git+https://[email protected]/<githubname>/<githubrepo.git>
npm install git://github.com/<githubname>/<githubrepo.git>
npm install github:<githubname>/<githubrepo>[#<commit-ish>]

однако, примечательно то, что недавно изменилось НПМ добавлять prepare скрипт для замены prepublish сценарий. это устраняет давнюю проблему, когда модули, установленные через git, не запускали prepublish script и, таким образом, не выполнили шаги сборки, которые происходят, когда модуль публикуется в npm регистратура. См.https://github.com/npm/npm/issues/3055.

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


установить его напрямую:

npm install visionmedia/express

кроме того, вы можете добавить "express": "github:visionmedia/express" до на package.json файл, затем запустите:

npm install

общая форма синтаксиса -

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

что означает, что для вашего случая это будет

npm install git+ssh://[email protected]/visionmedia/express.git

из документов npmjs:

установка npm:

устанавливает пакет от размещенного поставщика git, клонируя его с помощью мерзавец. Для полного удаленного url-адреса git будет предпринята попытка только этого URL-адреса.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>

| #semver:] является одним из git, git + ssh, git + http, git + https или git + файл.

если #, то она будет использоваться для клонирования именно это совершать. Если фиксация имеет формат #semver:, может быть любой допустимый диапазон semver или точная версия, и npm будет искать любые теги или ссылки, соответствующие этому диапазону в удаленном репозитории, например это было бы для зависимости реестра. Если ни #, ни

semver: указывается, затем используется master.

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

если пакет устанавливаемый содержит сценарий подготовки, его будут установлены зависимости и devDependencies, и подготовьте сценарий будет запущен до того, как пакет будет упакован и установлен.

следующие переменные среды git распознаются npm и будут быть добавлены в среду при запуске git:

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

Подробнее см. На странице git man.

примеры:

npm install git+ssh://[email protected]:npm/npm.git#v1.0.27
npm install git+ssh://[email protected]:npm/npm#semver:^5.0
npm install git+https://[email protected]/npm/npm.git
npm install git://github.com/npm/npm.git#v1.0.27
GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git npm install

вы также можете сделать

npm i alex-cory/fasthacks

или

npm i github:alex-cory/fasthacks

по сути:

npm i user_or_org/repo_name

обновление теперь вы можете сделать: npm install git://github.com/foo/bar.git
или в package.json:

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}

вы можете напрямую установить репозиторий github с помощью npm install команда, как это: npm install https://github.com/futurechallenger/npm_git_install.git --save

Примечание: в репо, которое будет установлено командой npm:

  1. возможно, вам нужно иметь р-н папка в вашем РЕПО, согласно комментарию @Dan Dascalescu.
  2. вы определенно должны иметь пакета.в JSON вы в репо! который я забыл добавить.

попробуйте эту команду

 npm install github:[Organisation]/[Repository]#[master/BranchName] -g

эта команда работала на меня.

 npm install github:BlessCSS/bless#3.x -g