আপনার কাছে সম্ভবত এমন কিছু রয়েছে:
"typescript":"~2.1.6"
আপনার package.json
যা সর্বশেষ গৌণ সংস্করণে আপডেট npm, আপনার ক্ষেত্রে হচ্ছে2.4.1
সম্পাদনা: ও.পি. থেকে প্রশ্ন
তবে এটি ব্যাখ্যা করে না যে "এনপিএম ইনস্টল" কেন লক ফাইলটি পরিবর্তন করবে। লক ফাইলটি কি পুনরুত্পাদনযোগ্য বিল্ড তৈরির উদ্দেশ্যে নয়? যদি তা হয় তবে সেমভার মান নির্বিশেষে এটি একই 2.1.6 সংস্করণটি ব্যবহার করা উচিত।
উত্তর:
এটি আপনার সম্পূর্ণ নির্ভরশীলতা গাছটি লক করার উদ্দেশ্যে is এর typescript v2.4.1
প্রয়োজন বলা যাক widget ~v1.0.0
। আপনি যখন এনপিএম ইনস্টল করেন তখন এটি দখল করে widget v1.0.0
। পরবর্তীতে আপনার সহকর্মী ডেভেলপার (অথবা সি আই বিল্ড) একটি npm ইনস্টল এবং পায় না typescript v2.4.1
কিন্তু widget
আপডেট করা হয়েছে widget v1.0.1
। এখন আপনার নোড মডিউলটি সিঙ্কের বাইরে। এটিই package-lock.json
বাধা দেয়।
বা আরও সাধারণভাবে:
উদাহরণ হিসাবে বিবেচনা করুন
প্যাকেজ এ:
{"নাম": "এ", "সংস্করণ": "0.1.0", "নির্ভরতা": {"বি": "<0.1.0"}
প্যাকেজ বি:
{"নাম": "বি", "সংস্করণ": "0.0.1", "নির্ভরতা": {"সি": "<0.1.0"}
এবং প্যাকেজ সি:
{"নাম": "সি", "সংস্করণ": "0.0.1"}
এগুলি যদি এ, বি, এবং সি এর একমাত্র সংস্করণগুলি রেজিস্ট্রিতে উপলব্ধ থাকে তবে একটি সাধারণ এনপিএম ইনস্টল এ ইনস্টল করবে:
এ @ ০.০.০ - বি@০.০.১ - সি @ ০.০.১
তবে, যদি B@0.0.2 প্রকাশিত হয়, তবে একটি নতুন এনএমপি ইনস্টল এ ইনস্টল করবে:
A@0.1.0 - B@0.0.2 - C@0.0.1 ধরে নেওয়া নতুন সংস্করণ বি এর নির্ভরতা পরিবর্তন করে নি। অবশ্যই, বি এর নতুন সংস্করণে সি এর নতুন সংস্করণ এবং যে কোনও সংখ্যক নতুন নির্ভরতা অন্তর্ভুক্ত থাকতে পারে। যদি এই ধরনের পরিবর্তনগুলি অনাকাঙ্ক্ষিত হয় তবে A এর লেখক B@0.0.1 এর উপর নির্ভরতা নির্দিষ্ট করতে পারে। তবে, যদি এ এর লেখক এবং বি এর লেখক একই ব্যক্তি না হন তবে এ এর লেখকের পক্ষে বলার উপায় নেই যে বি বা কিছুটা পরিবর্তন না হয়ে গেলে সে সি এর নতুন প্রকাশিত সংস্করণগুলিতে টানতে চায় না।
ওপি প্রশ্ন 2: সুতরাং আমি সঠিকভাবে বুঝতে পারি কিনা তা আমাকে দেখতে দিন। আপনি যা বলছেন তা হ'ল লক ফাইলটি গৌণ নির্ভরতাগুলির সংস্করণগুলি নির্দিষ্ট করে তবে শীর্ষ স্তরের নির্ভরতা নির্ধারণের জন্য প্যাকেজ.জসনের সাথে অস্পষ্ট মিলের উপর নির্ভর করে। এটা কি সঠিক?
উত্তর: নং প্যাকেজ-লকটিতে বর্ণিত মূল প্যাকেজগুলি সহ পুরো প্যাকেজ ট্রিটিকে লক করে package.json
। যদি আপনার typescript
লক থাকে তবে এটি পরিবর্তন না হওয়া অবধি এটি থাকা উচিত। এবং আগামীকাল সংস্করণ প্রকাশের সংস্করণ বলতে দিন । আমি যদি আপনার শাখাটি চেকআউট করে চালিত করি , এনপিএম লকফিলকে সম্মান করবে এবং ইনস্টল করবে ।2.4.1
package-lock.json
typescript
2.4.2
npm install
2.4.1
আরও চালু package-lock.json
:
প্যাকেজ-লক.জসন স্বয়ংক্রিয়ভাবে এমন কোনও ক্রিয়াকলাপের জন্য উত্পন্ন হয় যেখানে এনপিএম নোড_মডিউল গাছ বা প্যাকেজ.জসনকে সংশোধন করে। এটি সঠিক গাছ যা উত্পন্ন হয়েছিল তা বর্ণনা করে, যেমন পরবর্তী ইনস্টলেশনগুলি মধ্যবর্তী নির্ভরতা আপডেটগুলি নির্বিশেষে অভিন্ন গাছ উত্পন্ন করতে সক্ষম হয়।
এই ফাইলটি উত্স ভাণ্ডারগুলিতে প্রতিশ্রুতিবদ্ধ হওয়ার উদ্দেশ্যে এবং বিভিন্ন উদ্দেশ্যে পরিবেশন করা হয়েছে:
নির্ভরতা গাছের একক উপস্থাপনা বর্ণনা করুন যেমন সতীর্থ, মোতায়েন এবং অবিচ্ছিন্ন একীকরণ ঠিক একই নির্ভরতা ইনস্টল করার গ্যারান্টিযুক্ত।
ব্যবহারকারীদের ডিরেক্টরি নষ্ট না করেই নোড_মডিউলগুলির পূর্ববর্তী রাজ্যে "সময়-ভ্রমণ" করার জন্য একটি সুবিধা সরবরাহ করুন।
পাঠযোগ্য উত্স নিয়ন্ত্রণ নিয়ন্ত্রণের মাধ্যমে গাছের পরিবর্তনের বৃহত্তর দৃশ্যমানতার সুবিধার্থে।
পূর্ববর্তী ইনস্টল করা প্যাকেজগুলির জন্য পুনরাবৃত্ত মেটাডেটা রেজোলিউশনগুলি এড়িয়ে যাওয়ার জন্য এনপিএমকে অনুমতি দিয়ে ইনস্টলেশন প্রক্রিয়াটি অনুকূলকরণ করুন।
https://docs.npmjs.com/files/package-lock.json