it-swarm.dev

كيفية تثبيت حزمة npm من GitHub مباشرة؟

محاولة تثبيت الوحدات النمطية من github تؤدي إلى:

خطأ enoent على package.json.

مستنسخة بسهولة باستخدام صريح:

npm install https://github.com/visionmedia/express يلقي الخطأ.

npm install express يعمل.

لماذا لا يمكنني التثبيت من جيثب؟

هنا هو الإخراج وحدة التحكم:

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
724
guy mograbi

لأن https://github.com/visionmedia/express هو عنوان URL لصفحة ويب وليس وحدة نمطية npm. استخدم هذه النكهة:

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

أو هذه النكهة إذا كنت بحاجة إلى SSH:

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

يمكنك أيضًا عمل npm install visionmedia/express للتثبيت من Github

أو

npm install visionmedia/express#branch

هناك أيضًا دعم للتثبيت مباشرةً من Gist و Bitbucket و Gitlab وعدد من التنسيقات المتخصصة الأخرى. انظر إلى npm installالتوثيق لكلهم.

574
user2487135

إذا لم يتم تثبيت بوابة ، يمكننا أن نحاول

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

هناك أيضًا npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH} لاستخدام فرع مختلف.

47
zakelfassi

تحديث سبتمبر 2016

يعمل التثبيت من عناوين URL github من Vanilla الآن:

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

تحرير: هناك عدد من المستخدمين يعلقون على أنه لا يمكنك القيام بذلك لجميع الوحدات لأنك تقرأ من نظام تحكم مصدر ، والذي قد يحتوي على رمز غير صالح/غير مجمع/عربات التي تجرها الدواب. لكي تكون واضحًا (على الرغم من أنه يجب أن يكون بدون ذكر): نظرًا لأن الكود الموجود في الريبو في حالة قابلة للاستخدام في npm ، يمكنك الآن التثبيت بسعادة تامة من github

40
Fergie

الإجابة الحالية الحالية من قِبل Peter Lyons غير ذات صلة بإصدارات NPM الحديثة. على سبيل المثال ، استخدام نفس الأمر الذي تم انتقاده في هذه الإجابة أمر جيد الآن.

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

إذا كنت لا تزال تواجه مشكلات ، فقد تكون مشكلة في أي حزمة تستخدمها.

34
Colin D

تتم تغطية الأساليب جيدًا الآن في وثائق تثبيت 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 .

بالطبع ، سيحتاج مؤلفو الوحدة النمطية إلى تحديث الحزمة الخاصة بهم. json لاستخدام التوجيه prepare الجديد لبدء هذا العمل.

22
nextgentech

التحديثالآن يمكنك القيام به: npm install git://github.com/foo/bar.git
أو في package.json:

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

الشكل العام للبناء هو

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

وهو ما يعني أن قضيتك ستكون

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

من مستندات npmjs:

تثبيت npm:

تثبيت الحزمة من مزود git المستضاف ، استنساخها مع بوابة. للحصول على عنوان URL عن بُعد بالكامل ، ستتم محاولة عنوان URL هذا فقط.

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

| #semver:] أحد ملفات git أو git + ssh أو git + http أو git + https أو git + file.

إذا تم توفير # ، فسيتم استخدامه لاستنساخ هذا الالتزام بالضبط. إذا كان الالتزام-ish له التنسيق #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 page لمزيد من التفاصيل.

أمثلة:

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
15
ishandutta2007

تثبيته مباشرة:

npm install visionmedia/express

بدلاً من ذلك ، يمكنك إضافة "express": "github:visionmedia/express" إلى قسم "dependencies" من ملف package.json ، ثم تشغيل:

npm install
14
Tyler Long

هل يمكن أن تفعل أيضا

npm i alex-cory/fasthacks

أو

npm i github:alex-cory/fasthacks

في الأساس:

npm i user_or_org/repo_name
9
Alex Cory

يمكنك تثبيت github repo بواسطة أمر npm install مباشرة ، مثل هذا: npm install https://github.com/futurechallenger/npm_git_install.git --save

ملاحظة: في الريبو الذي سيتم تثبيته بواسطة الأمر npm:

  1. ربما يجب أن يكون لديك dist مجلد في repo ، وفقًا لتعليقDan Dascalescu.
  2. بالتأكيد يجب أن يكون لديك package.json in you repo! الذي نسيت إضافة.
5
Bruce Lee