একটি প্যাকেজ.জসনে গিট URL ব্যবহার করে কোনও শাখা বা ট্যাগের উপর নির্ভরশীল?


399

বলুন যে আমি বাগফিক্স সহ একটি নোড মডিউলটি কাঁটাচামচ করেছি এবং বাগ ফিক্স একত্রিত হয়ে প্রকাশ না হওয়া পর্যন্ত আমি অবশ্যই একটি বৈশিষ্ট্যযুক্ত শাখায় আমার স্থির সংস্করণটি ব্যবহার করতে চাই।

আমার এর স্থির সংস্করণটি আমি কীভাবে উল্লেখ dependenciesকরব package.json?

উত্তর:


569

থেকে npm ডক্স :

git://github.com/<user>/<project>.git#<branch>

git://github.com/<user>/<project>.git#feature\/<branch>

এনপিএম সংস্করণ 1.1.65 হিসাবে, আপনি এটি করতে পারেন:

<user>/<project>#<branch>

130
এনপিএম 1.1.65 পর্যন্ত, গিথুব ইউআরএল আরও সংক্ষিপ্ত হতে পারে user/projectnpmjs.org/doc/files/package.json.html আপনি শাখাটি সংযুক্ত করতে পারেনuser/project#branch
ড্যান্থেট

2
git://github.com/<user>/<project>.git#feature/blahকাজ করেছেন কিন্তু <user>/<project>.git#feature/blahকরেন নি ... সম্ভবত তাদের রেজেক্সকে feature/blahঅ্যাকাউন্টে নেওয়ার জন্য আরও উন্নত করা দরকার । এটি এনপিএম ছিলv1.4.28
পুলকিটসিংহল

5
সংস্করণ নম্বরটি কীভাবে অন্তর্ভুক্ত করবেন?
রিচার্ড

1
@Hurrymaplelad আমি কি অনুরোধের জন্য একই কাজ করতে পারি? যদি তাই হয় তবে কমান্ডটি কেমন?
রাউন্ড্রোবিন

3
আপডেট করা হয়েছে এনপিএম ডক্স লিংক ডকস.এনএমজেজেএস
প্যাকেজ.জসন

136

@ দন্তেতার মন্তব্য:

এনপিএম 1.1.65 পর্যন্ত, গিথুব ইউআরএল আরও সংক্ষিপ্ত ব্যবহারকারী / প্রকল্প হতে পারে। npmjs.org/doc/files/package.json.html আপনি শাখাটি ব্যবহারকারী / প্রকল্প # শাখার মতো সংযুক্ত করতে পারেন

সুতরাং

"babel-eslint": "babel/babel-eslint",

অথবা জেএসএসএসে v1.12.0 ট্যাগের জন্য:

"jscs": "jscs-dev/node-jscs#v1.12.0",

দ্রষ্টব্য, আপনি যদি এনএমপি - সেভ ব্যবহার করেন তবে আপনি আরও দীর্ঘ গিট পাবেন

Https://docs.npmjs.com/files/package.json#git-urls-as- নির্ভরতা থেকে

নির্ভরতা হিসাবে গিট ইউআরএল

গিট ইউআরএলগুলি ফর্ম হতে পারে:

গিট: //github.com/user/project.git#commit-ish গিট + এসএসএস: // ব্যবহারকারী @ হোস্টনাম: প্রজেক্ট.git # কমিট-ইশ গিট + এসএসএস: // ইউজার @ হোস্টনেম / প্রজেক্ট.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish

কমিট-ইশ হ'ল কোনও ট্যাগ, শ, বা শাখা যা গিট চেকআউটের যুক্তি হিসাবে সরবরাহ করা যেতে পারে। ডিফল্ট হ'ল মাস্টার।

গিটহাব ইউআরএল

সংস্করণ 1.1.65 হিসাবে, আপনি গিটহাব ইউআরএলগুলিকে কেবল "foo" হিসাবে উল্লেখ করতে পারেন: "ব্যবহারকারী / foo- প্রকল্প" " গিট ইউআরএল যেমন ঠিক তেমন একটি প্রতিশ্রুতি-প্রত্যয় অন্তর্ভুক্ত করা যেতে পারে। উদাহরণ স্বরূপ:

{"নাম": "foo",
"সংস্করণ": "0.0.0",
"নির্ভরতা": {"এক্সপ্রেস": "ভিশনমিডিয়া / এক্সপ্রেস", "মোচা": "ভিশনমিডিয়া / মোচা # 4727d357ea"}


2
প্রতিশ্রুতিবদ্ধ sha1 এর উপর নির্ভর করে পছন্দসই বিকল্প হওয়া উচিত, বিশেষত যদি আপনি এমন কোনও রেপো নির্ভর করেন যা আপনার নিয়ন্ত্রণে নেই। গিট শাখা এবং ট্যাগগুলি অপরিবর্তনীয় নয় (মুছে ফেলা / বদলে দেওয়া যেতে পারে, দূষিতভাবে / দুর্ঘটনার দ্বারা), যখন এটি (প্রায়) শ 1 সংঘর্ষ তৈরি করা অসম্ভব।
jakub.g

1
আমার কি একটি শাখা থাকতে পারে এবং কমিট-ইশ করার জন্য একটি কমিট করতে পারি?
munchschair

45

আপনি যদি ব্যবহার develবা featureশাখা ব্যবহার করতে চান , বা আপনি এনপিএম রেজিস্ট্রিতে একটি নির্দিষ্ট প্যাকেজ প্রকাশ করেন নি, বা এটি একটি ব্যক্তিগত মডিউল কারণ আপনি করতে পারেন না, তবে আপনি আপনার git://সংস্করণ সংখ্যার পরিবর্তে ইউআরআইতে নির্দেশ করতে পারেন package.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

#refঅংশ ঐচ্ছিক, এবং এটি একটি শাখা হতে পারে (যেমন master), ট্যাগ (মত 0.0.1) অথবা একটি আংশিক বা পূর্ণ আইডি কমিট।


26

এনপিএম এর সর্বশেষ সংস্করণে আপনি কেবল এটি করতে পারেন:

npm install gitAuthor/gitRepo#tag

রেপো যদি একটি বৈধ এনপিএম প্যাকেজ হয় তবে এটি প্যাকেজ.জসনে স্বয়ংক্রিয়ভাবে যুক্ত হবে:

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

আপনি যদি এটি @ অ্যাডজিনিডর্ডনের উত্তরে যুক্ত করতে পারতেন তবে এখন ম্যানুয়াল আলিয়াসিংয়ের দরকার নেই!


4
না, তা নয়। এটি ভুলভাবে ইনস্টল করে। এটি কোনওভাবেই সংগ্রহশালা থেকে পুরো ডিরেক্টরি কাঠামো অন্তর্ভুক্ত করে না, কেবল প্যাকেজ.জসন, ইয়ার্ন.লক, রিডমি এবং লাইসেন্সের মতো কিছু ফাইল। এখানে কোনও এসসিআর বা ডিস্ট ফোল্ডার নেই।
StalkAlex

@ স্টালাকএলেক্স ডকসস.এনএমজেজেএস. com/ cli/ publish এবং তারপরে আপনি বিল্ড স্ক্রিপ্টগুলির জন্য ইনস্টল করা রেপো পরীক্ষা করে দেখুন। হতে পারে তারা ট্যাগ হয়েছে বা পোস্ট-ইনস্টলটি আপনার পক্ষে কাজ করে না, এটি সেই নির্দিষ্ট প্যাকেজের জন্য সমস্যা তবে যাইহোক আশা করি এটি সহায়তা করে!
ঘূর্ণি

@ ফোরটেক্স ধন্যবাদ, ট্যাগিং দিয়ে ঠিক কী বোঝাতে চাইছেন? এটি কীভাবে এমন সমস্যা তৈরি করে?
স্টালাক্যালেক্স

0

যদি এটি কাউকে সহায়তা করে তবে আমি উপরের সমস্ত কিছু চেষ্টা করেছি (https ডাব্লু / টোকেন মোড) - এবং এখনও কিছুই কাজ করছে না। আমি কোনও ত্রুটি পাই নি, তবে নোড_মডিউল বা প্যাকেজ_লক.জসনে কোনও কিছুই ইনস্টল করা হবে না। যদি আমি টোকেন বা রেপো নাম বা ব্যবহারকারীর নাম ইত্যাদির কোনও অক্ষর পরিবর্তন করে থাকি - আমি একটি ত্রুটি পেয়ে যাব। সুতরাং আমি জানতাম আমার সঠিক টোকেন এবং রেপো নাম ছিল।

আমি অবশেষে বুঝতে পেরেছিলাম কারণ আমার প্যাকেজে আমার যে নির্ভরতা ছিল তার নাম। এমনকি এনপিএম ইনস্টল --verbose কোনও সমস্যা আছে তা বলে না। এটি কেবল নির্ভর করে ডাব্লু / ও ত্রুটি উপেক্ষা করে to

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