Как установить пакет 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