একটি নির্দিষ্ট সংস্করণে গিট থেকে এনপিএম ইনস্টল করুন


181

ধরে নেওয়া হয়েছে যে আমি নোড.জেএস এর জন্য একটি মডিউল লিখেছি যা আমি ব্যক্তিগত রাখতে চাই। আমি জানি যে আমি লাইনটি যুক্ত করতে পারি (উচিত):

"private": "true"

থেকে package.jsonফাইল, এবং আমি আরও জানতে পারি যে আমি করতে পারেন npm installএই মডিউল একটি ফাইল সিস্টেম পাথ অথবা GitHub সহ একটি Git সংগ্রহালয় একটি লিঙ্ক ব্যবহার করে।

আমি আরও জানি যে আমি এই জাতীয় কোনও ফাইল সিস্টেমের পথ বা গিট রেপোতে একটি লিঙ্ক রাখতে পারি package.json, যাতে dependenciesঅংশটি কিছুটা দেখতে পারা যায় :

"dependencies": {
  "myprivatemodule": "git@github.com:..."
}

আমি এখন যা চাই তা সর্বশেষতম সংস্করণে লিঙ্ক করা নয়, একটি নির্দিষ্ট সংস্করণের সাথে। আমি কেবল একমাত্র সম্ভাবনা জানি তার আইডি ব্যবহার করে একটি নির্দিষ্ট কমিটের সাথে লিঙ্ক করা। তবে এটি কোনও সংস্করণ নম্বর ব্যবহারের চেয়ে কম পঠনযোগ্য এবং খারাপ রক্ষণযোগ্য 0.3.1

সুতরাং আমার প্রশ্নটি: এই সংস্করণটি অন্তর্ভুক্ত সর্বশেষ প্রতিশ্রুতিটির জন্য এনপিএম অনুসন্ধান গিটার সংগ্রহস্থলটি যেভাবেই হোক কোনও সংস্করণ নম্বর নির্দিষ্ট করা এবং এনপিএম অনুসন্ধান করা সম্ভব?

যদি তা না হয় তবে কীভাবে আপনি আপনার প্রকল্পগুলিতে এই সমস্যাটি সমাধান করবেন? আপনি কি কমিট আইডি নিয়ে থাকেন বা এর থেকে আরও ভাল সমাধান আছে?

উত্তর:


193

একজন নির্ভরতা থেকে পাওয়া হতে হয়েছে registryমাত্র দ্বারা ইনস্টল করা একটি নির্দিষ্ট versionবর্ণনাকারী

আপনি অবশ্যই করতে পারেন তৈরি করুন আপনার নিজের রেজিস্ট্রি ব্যবহার পরিবর্তে registry.npmjs.orgযদি আপনার প্রকল্পের সর্বজনীনভাবে ভাগ করা উচিত নয়।

তবে, যদি এটি কোনও রেজিস্ট্রি না থাকে তবে এটি ইউআরএল বা গিট ইউআরএল দ্বারা রেফারেন্স করতে হবে । একটি গিট ইউআরএল সহ একটি সংস্করণ নির্দিষ্ট করতে <commit-ish>, কোনও URL এর মতো শেষে কোনও ট্যাগের মতো একটি উপযুক্ত অন্তর্ভুক্ত করুন ।

উদাহরণস্বরূপ, নামের একটি ট্যাগের জন্য 0.3.1:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}

দ্রষ্টব্য : উপরের স্নিপেটটি বেস ইউআরএলটিকে একইভাবে দেখায় যেমনটি প্রশ্নটিতে পোস্ট করা হয়েছিল।

টুকরো টুকরো অংশটি ...পূরণ করা উচিত:

"myprivatemodule": "git@github.com:{owner}/{project}.git#0.3.1"

এবং, এসএসএইচ অ্যাক্সেস উপলব্ধ না হলে আলাদা ঠিকানা ঠিকানা বিন্যাসের প্রয়োজন হবে:

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1"

আপনার ওএসের উপর নির্ভর করে, আপনি linkগিথুব থেকে ক্লোন করেছেন এমন অন্য ফোল্ডারে নির্ভরতার উপর নির্ভর করতেও সক্ষম হতে পারেন।


1
এই পোস্টের লিঙ্কগুলির মধ্যে কিছুগুলি পুরানো বলে মনে হচ্ছে যেহেতু তারা পরিবর্তে 404 পৃষ্ঠাগুলিতে নিয়ে যায়। এটি একটি দুঃখের বিষয়, যেহেতু এর কিছু তথ্য এমন তথ্য যা আমি বেশ কিছুদিন ধরে খুঁজছিলাম।
এমভিজি

5
আমি এর সাথে একটি নির্দিষ্ট সংস্করণ ট্যাগ করেছি git tag -a "1.0.0"এবং ধাক্কা git push --tagsদিয়েছি, তারপরে নির্ভরতার #v1.0.0শেষে আমি যুক্ত করেছি added git+sshকিন্তু npm updateকিছুই হয় না।
loretoparisi

3
দুঃখিত আমি যুক্ত vকরা প্রয়োজন ছিল বোঝাতে চাইনি । এর পরে #, খণ্ডটি ট্যাগটির পুরো নামের সাথে (বা অন্য প্রতিশ্রুতি ) - আপনার ক্ষেত্রে, এর সাথে মেলে #1.0.0
জোনাথন লোনোস্কি

জুলাই ২০১ 2016 পর্যন্ত, নিজের রেজিস্ট্রি হোস্টিং আরও জটিল হয়ে উঠেছে যেহেতু তারা কাউচডিবি থেকে মাইক্রোসার্ভেজে চলেছে
ইয়ান ফটো

3
আপনি এখন ব্যবহার বা প্যাকেজ.জসন npm i {owner}/{project}#{tag}যুক্ত "{library}": "github:{owner}/{project}#{tag}"করতে বা যুক্ত করতে পারেনgit@github.comgit://github.com
মাইক ডব্লু

237

গৃহীত উত্তরটি আমার পক্ষে কার্যকর হয়নি। গিথুব থেকে প্যাকেজটি টানতে আমি এখানে যা করছি:

npm install --save "git://github.com/username/package.git#commit"

অথবা প্যাকেজ.জসনে এটি ম্যানুয়ালি যুক্ত করুন:

"dependencies": {
  "package": "git://github.com/username/package.git#commit"
}

41
আপনি যদি HTTP / https ব্যবহার করে থাকেন তবে নিশ্চিত হয়ে নিন যে আপনি "গিট +" উপসর্গটি অন্তর্ভুক্ত করেছেন:"package": "git+https://github.com/username/package.git#commit"
এটস গোড়াল

4
এটি "এনএমপি ইনস্টল" হিসাবে কাজ করেছে তবে আমি যখন আমার অ্যাপ্লিকেশনটি চালানোর চেষ্টা করেছি তখন প্রয়োজনীয় ('মাইমডিউল') এটি প্যাকেজটি খুঁজে পেতে ব্যর্থ হয়েছিল। প্যাকেজটি একই নাম সহ নোড_মডিউল ডিরেক্টরিতে রয়েছে।
ডেরিক

ওহ, আমি যে নির্দিষ্ট প্রতিশ্রুতি চেয়েছিলাম তাতে মডিউলটি বিল্ডটি অন্তর্ভুক্ত করেনি তাই আপনার যদি একই সমস্যা হয় তবে আপনাকে ম্যানুয়ালি এটি তৈরি করতে হতে পারে।
ডেরিক ২

1
আপনি #tagযা ব্যবহার করতে পারেন যা কোনও সংস্করণ নম্বরটিতে সাধারণত নির্দেশ করে
ডেল্ট্রি

1
@ সুরজিকাল আপনি গিট সহ সংস্করণ নম্বর ব্যবহার করার আগে আপনাকে একটি রিলিজ ট্যাগ করতে হবে। যেমন git tag -a v1.0.1 && git push --tag && git push@ জোনাথন লোনোস্কিও একটি মন্তব্যে বলেছিলেন।
dotnetCarpenter

80

যদি সংস্করণ অনুসারে আপনি ট্যাগ বা রিলিজ বোঝায় তবে গিথুব তাদের জন্য ডাউনলোড লিঙ্ক সরবরাহ করে। উদাহরণস্বরূপ, যদি আমি আনয়ন সংস্করণ ০.০.২ ইনস্টল করতে চাই (এটি এনএমপি তে উপলব্ধ নয়) তবে আমি আমার package.jsonঅধীনে যুক্ত করব dependencies:

"fetch": "https://github.com/github/fetch/archive/v0.3.2.tar.gz",

কমিট হ্যাশ পদ্ধতির সাথে তুলনা করার সময় একমাত্র অসুবিধা হ'ল একটি হ্যাশ পরিবর্তিত কোড উপস্থাপন না করার গ্যারান্টিযুক্ত, যেখানে একটি ট্যাগ প্রতিস্থাপন করা যেতে পারে। শুকরিয়া এটি খুব কমই ঘটে।

হালনাগাদ:

এই দিনগুলিতে আমি যে পদ্ধতির ব্যবহার করছি তা হ'ল গিটহাব পরিবেশিত নির্ভরতার জন্য কমপ্যাক্ট স্বরলিপি:

"dependencies": {
  "package": "github:username/package#commit"
}

যেখানে প্রতিশ্রুতিবদ্ধ হওয়া কোনও ট্যাগের মতো কোনও কিছু হতে পারে anything গিটহাবের ক্ষেত্রে আপনি প্রাথমিকটি github:ডিফল্ট হওয়ার কারণে এমনকি প্রাথমিকটি ফেলে দিতে পারেন ।


সংরক্ষণাগার মোডটি কমিটের জন্যও কাজ করে; উদাহরণস্বরূপ, `সুতা যোগ করুন github.com
github

সবচেয়ে পরিষ্কার সমাধান।
চার্লি বোডকিন

8

আমার উপরে উদাহরণস্বরূপ @ কেবাইটে মন্তব্য কাটা হয়ে গেছে, সুতরাং এখানে এমন কিছু যা পড়া সহজ ...

উপরে বর্ণিত @ সুরজিকাল পদ্ধতিটি শাখা কমিটিগুলির জন্য কাজ করে, তবে এটি যে বৃক্ষ প্রতিশ্রুতির জন্য চেষ্টা করেছিলাম তার জন্য কাজ করে না ।


সংরক্ষণাগার মোডটিও কমিটের জন্য কাজ করে। উদাহরণস্বরূপ, আনা @ a2fbf83

এনপিএম :

npm install  https://github.com/github/fetch/archive/a2fbf834773b8dc20eef83bb53d081863d3fc87f.tar.gz

সুতা :

yarn add  https://github.com/github/fetch/archive/a2fbf834773b8dc20eef83bb53d081863d3fc87f.tar.gz

বিন্যাস :

 https://github.com/<owner>/<repo>/archive/<commit-id>.tar.gz


মোডের প্রয়োজন এমন গাছটি এখানে প্রতিশ্রুতিবদ্ধ /archive/:

yarn add  https://github.com/vuejs/vuex/archive/c3626f779b8ea902789dd1c4417cb7d7ef09b557.tar.gz

সম্পর্কিত vuex অঙ্গীকার জন্য


8

এই কমান্ডটি username/packageনির্দিষ্ট গিট কমিট থেকে এনপিএম প্যাকেজ ইনস্টল করে :

npm install https://github.com/username/package#3d0a21cc

3d0a21ccকমিট হ্যাশের প্রথম 8 টি অক্ষর এখানে characters


3

আমি রান করার সময় যে সমস্যার মুখোমুখি হয়েছিলাম তা এখানে বর্ণনা করছি npm install- প্যাকেজটি উপস্থিত হয় না node_modules

ইস্যুটি হ'ল ইনস্টলড প্যাকেজটির nameমান package.jsonআমদানিকৃত প্যাকেজের নামের চেয়ে আলাদা ( package.jsonআমার প্রকল্পের কী )।

তাই আপনি যদি আপনার ইনস্টল প্রকল্পের নাম some-package(তার নাম মান package.json) তারপর package.jsonআপনার প্রকল্প লিখে: "some-package": "owner/some-repo#tag"


আমি আশা করি আপনার উত্তরটি আগে খুঁজে পেয়েছি 😓 - আমি ঠিক সমাধান করেছি, একই সমস্যাটি আমাকে কিছু সময়ের জন্য সংগ্রাম করতে বাধ্য করেছে; এবং এই nameপ্রয়োজনীয়তাটি প্রায়শই নেটে উল্লিখিত হয় না .. (এমন নয় যে আমি এটির জন্য কমপক্ষে ব্যয় করতে পারি)।
কামাফেদার

"আপনার প্যাকেজ নির্ভরতাগুলি আপনার প্যাকেজে যুক্ত করুন j - সত্যিই এটির উপর জোর দেওয়া হচ্ছে না: help.github.com/en/articles/…
কামাফেদার

আমি খুঁজে পেয়েছি npm install --save git+https://<remote-github-repo-url>এটি ভবিষ্যতে আবারও এই সমস্যায় না পড়ার একটি দুর্দান্ত নিরাপদ উপায়।
কামাফেদার

2

আমার টিএফজেএস-কোরের দুটি সংস্করণ চালানো দরকার এবং এটি পাওয়া গেছে যে ইনস্টল হওয়ার পরে উভয়ই তৈরি করা দরকার।

package.json:

"dependencies": {
  "tfjs-core-0.14.3": "git://github.com/tensorflow/tfjs-core#bb0a830b3bda1461327f083ceb3f889117209db2",
  "tfjs-core-1.1.0": "git://github.com/tensorflow/tfjs-core#220660ed8b9a252f9d0847a4f4e3c76ba5188669"
}

তারপর:

cd node_modules/tfjs-core-0.14.3 && yarn install && yarn build-npm && cd ../../
cd node_modules/tfjs-core-1.1.0  && yarn install && yarn build-npm && cd ../../

এবং পরিশেষে, গ্রন্থাগারগুলি ব্যবহার করতে:

import * as tf0143 from '../node_modules/tfjs-core-0.14.3/dist/tf-core.min.js';
import * as tf110 from '../node_modules/tfjs-core-1.1.0/dist/tf-core.min.js';

এটি দুর্দান্তভাবে কাজ করেছে তবে অবশ্যই # যুবতী


1
আপনাকে ধন্যবাদ, আমি এটি প্রতিটি অন্যান্য কল্পনাপ্রসূত উপায়ে আমদানি করার চেষ্টা করছি। আমাকে সরাসরি ফাইল থেকে আমদানি করতে হয়েছিল তা বুঝতে আমার স্নিপেট দেখতে হয়েছিল।
ভিক্টর ইভেনস

1

আপনি যদি একাধিক মডিউল দিয়ে এটি করছেন এবং সংস্করণগুলিতে আরও নিয়ন্ত্রণ রাখতে চান তবে আপনার নিজের ব্যক্তিগত এনপিএম রেজিস্ট্রি থাকা উচিত।

এইভাবে আপনি এনএমপি আপনার ব্যক্তিগত এনএমপি রেজিস্ট্রিতে আপনার মডিউলগুলি প্রকাশ করতে পারেন এবং পাবলিক মডিউলগুলির জন্য প্যাকেজ.জসন এন্ট্রিগুলি ব্যবহার করতে পারেন।

https://docs.npmjs.com/files/package.json#dependencies


সমস্ত লিঙ্কগুলি 404
সাইরিল পন্টভিউক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.