2014-10-01 5 views
1

У меня возникли проблемы с установкой одной из моих собственных зависимостей из github.Установить зависимость NPM от github

Мой package.json выглядит следующим образом:

{ 
    "name": "smartorm", 
    "description": "Intelligent multi-database object relational mapping", 
    "private": true, 
    "main": "smart.js", 
    "dependencies": { 
    "mysql": "~2.5.0", 
    "graphlib": "Queuecumber/GraphLibJS#v1.1", 
    "promise": "~6.0.0", 
    "xtend": "Raynos/xtend#v4.0.0" 
    } 
} 

Зависимость "graphlib" вызывает ошибку. Это один из моих репозиториев, поэтому я уверен, что не настроил его правильно. Любая помощь будет оценена по достоинству.

я получаю следующее сообщение об ошибке при запуске npm install

npm http 304 https://registry.npmjs.org/graphlib 
npm ERR! Error: No compatible version found: [email protected]'Queuecumber/GraphLibJS#v1.1' 
npm ERR! Valid install targets: 
npm ERR! ["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.1.0","0.1.1","0.2.0","0.2.1","0.3.0","0.3.1","0.3.2","0.3.3","0.4.0","0.4.1","0.4.2","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.5.6","0.5.7","0.5.8","0.5.9","0.5.10","0.5.11","0.5.12","0.6.0","0.7.0","0.7.1","0.7.2","0.7.3","0.7.4","1.0.0-pre1","0.8.0"] 
npm ERR!  at installTargetsError (/usr/share/npm/lib/cache.js:719:10) 
npm ERR!  at /usr/share/npm/lib/cache.js:638:10 
npm ERR!  at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:142:7) 
npm ERR!  at /usr/lib/nodejs/graceful-fs/polyfills.js:133:7 
npm ERR!  at Object.oncomplete (fs.js:107:15) 
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.13.0-36-generic 
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" 
npm ERR! cwd /media/Data/Code/Active/SmartORM 
npm ERR! node -v v0.10.25 
npm ERR! npm -v 1.3.10 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /media/Data/Code/Active/SmartORM/npm-debug.log 
npm ERR! not ok code 0 

У меня есть тег под названием «v1.1», который связан с высвобождением GitHub названием «v1.1». Пакет.json для этого репозитория отображает «1.1» в поле номера версии. Я вставил package.json из этого хранилища здесь

{ 
    "name": "graphlib", 
    "description": "Directed graphs in JavaScript using a sparse (adjacency list) representation", 
    "private": true, 
    "version": "1.1" 
} 

ответ

2

Как видно в repository for GraphLibJS, что проект не создан как пакет общественного НПМ. В файле package.json, действительно, вы можете видеть флаг private: true. Это заставляет NPM игнорировать этот пакет.

два возможных решение:

  1. Скачать файл JS библиотеки, а также включить его в свой проект, как вы могли бы сделать с любым другим файлом JS, который не является пакет NPM. Вероятно, это будет под вашим контролем версий, и вам придется вручную его обновить.
  2. Пройдите проект GitHub и обновите файл package.json, чтобы он рекламировал публичный репозиторий NPM. Некоторая помощь может исходить от this article.
    После того, как вы сделали с вашей вилкой, это было бы хорошей идеей, также подать заявку на тянущий к оригинальной упаковке;)

EDIT

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

  1. Прежде всего, файл package.json содержит неправильную версию. В Node.js версии должны быть в форме x.y.z (например, 1.1.0); «1.1» не является допустимым номером версии.
  2. В реестре NPM уже есть пакет под названием «graphlib», другой владелец, который вызывает проблемы.
  3. Если пакет на GitHub был верным, я предполагаю, что он, вероятно, сработает. Однако, учитывая эту ошибку, NPM пытается найти тот, который находится в своем репозитории, который не имеет версии 1.1.
  4. При редактировании файла package.json изменив строку на:
    "graphlib": "git://github.com/Queuecumber/GraphLibJS.git",
    Затем NPM фактически пытается забрать этот пакет на GitHub, но она не со следующей ошибкой:

    Alessandros-MacBook Air- : тест Alessandro $ npm install npm ERR! Ошибка: неверная версия: «1.1» npm ERR! в ObjectModule.exports.fixVersionField (/ usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js: 183: 13)

Итак, мое предложение по-прежнему обновлять файл package.json библиотеки, открывая его.

+2

Я думаю, что 'private: true' просто держит пакет от публикации до npm, а не от его установки из удаленного источника. – mscdex

+1

@mscdex Вы правы. Однако я решил проблему, и я обновляю ответ. – Qualcuno

+0

Номер версии из 3-х частей исправил его. Я искал какое-то время, но нигде не видел этого документально. –

Смежные вопросы