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

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

Ошибка ENOENT на package.json.

Легко воспроизводится с помощью выражения:

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

Ответ 1

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

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

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

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

Ответ 2

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

или же

npm install visionmedia/express#branch

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Установка из ванильных URL-адресов https github теперь работает:

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

ОБНОВЛЕНИЕ 1: есть несколько пользователей, которые комментируют, что вы не можете сделать это для всех модулей, потому что вы читаете из системы контроля версий, которая может содержать недопустимый/некомпилированный/ошибочный код. Итак, чтобы быть ясным (хотя это само собой разумеется): учитывая, что код в репозитории находится в состоянии, пригодном для использования в npm, теперь вы можете довольно успешно установить его прямо с github

ОБНОВЛЕНИЕ 2: (21-10-2019) Мы сейчас переживаем "пик Typescript/React/Babel", и поэтому компиляция JavaScript стала довольно распространенным явлением. Если вам нужно принять во внимание компиляцию, загляните в prepare. Тем не менее, модули NPM не нужно компилировать, и разумно предположить, что компиляция не по умолчанию, особенно для более старых модулей узлов (и, возможно, также для очень нового, передового "ESNext") -y из них).

Ответ 6

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

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

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

Ответ 7

Методы достаточно хорошо описаны в документации по установке 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>]

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

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

Ответ 8

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

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

Ответ 9

Общий вид синтаксиса

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

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

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

Из npmjs docs:

npm install:

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

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

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

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

semver: указан, тогда используется мастер.

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

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

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

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

Подробнее см. справочную страницу git.

Примеры:

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

Ответ 10

Установите его прямо:

npm install visionmedia/express

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

npm install

Ответ 11

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

npm i alex-cory/fasthacks

или

npm i github:alex-cory/fasthacks

В принципе:

npm i user_or_org/repo_name

Ответ 12

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

ПРИМЕЧАНИЕ. В репо, который будет установлен командой npm:

  • возможно, вам нужно иметь папку dist в вашем репо, согласно комментарию @Dan Dascalescu.
  • Вы должны иметь package.json в своем репо! которые я забыл добавить.

Ответ 13

Просто:

npm install *GithubUrl*.git --save

пример:

npm install https://github.com/visionmedia/express.git --save

Ответ 14

Я попробовал npm install git+https://github.com/visionmedia/express, но это заняло слишком много времени, и я не был уверен, что это сработает.

То, что сработало для меня, было - yarn add git+https://github.com/visionmedia/express.

Ответ 15

Попробуйте выполнить эту команду

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

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

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