yarn.lockआपके द्वारा प्रदर्शन करने के बाद यार्न एक फ़ाइल बनाता है yarn install।
क्या यह भंडार या उपेक्षा के लिए प्रतिबद्ध होना चाहिए? ये किसके लिये है?
yarn.lockआपके द्वारा प्रदर्शन करने के बाद यार्न एक फ़ाइल बनाता है yarn install।
क्या यह भंडार या उपेक्षा के लिए प्रतिबद्ध होना चाहिए? ये किसके लिये है?
जवाबों:
हां, आपको इसे चेक करना चाहिए, npm से माइग्रेटिंग देखें
यार्न आपके पैकेज की रूट डायरेक्टरी के भीतर एक यार्न.लॉक फ़ाइल उत्पन्न करेगा। आपको इस फ़ाइल को पढ़ने या समझने की आवश्यकता नहीं है - बस इसे स्रोत नियंत्रण में देखें।
निर्भर करता है कि आपकी परियोजना क्या है:
इसका अधिक विस्तृत वर्णन इस गीथहब अंक में पाया जा सकता है जहां यार्न के रचनाकारों में से एक। कहते हैं:
Package.json मूल लेखक द्वारा वांछित इच्छित संस्करणों का वर्णन करता है, जबकि यार्न .lock किसी दिए गए एप्लिकेशन के लिए अंतिम ज्ञात-अच्छे कॉन्फ़िगरेशन का वर्णन करता है।
yarn.lockशीर्ष स्तर की परियोजना के केवल -फाइल का उपयोग किया जाएगा। इसलिए जब तक कि किसी परियोजना को स्टैंडअलोन का उपयोग नहीं किया जाएगा और किसी अन्य परियोजना में स्थापित नहीं किया जाएगा, तब तक किसी भी तरह के yarn.lockअपराध करने में कोई फायदा नहीं है - इसके बजाय यह हमेशा package.jsonनिर्भर करेगा कि परियोजना निर्भरता के किन संस्करणों पर निर्भर करती है।
मैं देख रहा हूं कि ये एक में दो अलग-अलग प्रश्न हैं। मुझे दोनों का जवाब दो।
क्या आपको रेपो में फाइल करनी चाहिए?
हाँ। जैसा कि क्यूकीजेर के उत्तर में बताया गया है कि इस फाइल को रेपो में शामिल करने के लिए माइग्रेशन गाइड में सिफारिश की गई है । यह समझने के लिए पढ़ें कि आपको इसे करने की आवश्यकता क्यों है।
क्या है yarn.lock?
यह एक ऐसी फाइल है जो प्रत्येक पैकेज के लिए चेकसम के साथ आपकी परियोजना के लिए सटीक निर्भरता संस्करणों को संग्रहीत करती है। यह आपकी निर्भरता के लिए स्थिरता प्रदान करने का यार्न का तरीका है।
यह समझने के लिए कि इस फाइल की आवश्यकता क्यों है, आपको यह समझने की आवश्यकता है कि मूल एनपीएम के पीछे क्या समस्या थी package.json। जब आप पैकेज स्थापित करते हैं, तो एनपीएम एक विशिष्ट संशोधन (सेवर) के बजाय एक निर्भरता के अनुमत संशोधनों की श्रेणी को संग्रहीत करेगा। एनपीएम निर्दिष्ट सीमा (यानी गैर-ब्रेकिंग पैच अपडेट) के भीतर निर्भरता के निर्भरता नवीनतम संस्करण को अपडेट करने की कोशिश करेगा। इस दृष्टिकोण के साथ दो समस्याएं हैं।
निर्भरता के लेखक पैच संस्करण अपडेट जारी कर सकते हैं, जबकि वास्तव में आपके प्रोजेक्ट को प्रभावित करने वाले ब्रेकिंग परिवर्तन को पेश करेंगे।
npm installअलग-अलग समय पर चलने वाले दो डेवलपर्स को निर्भरता के विभिन्न सेट मिल सकते हैं। जिसके कारण एक बग दो समान वातावरणों पर प्रजनन योग्य नहीं हो सकता है। यह उदाहरण के लिए CI सर्वरों के लिए बिल्ड स्थिरता मुद्दों का कारण हो सकता है।
दूसरी ओर यार्न अधिकतम भविष्यवाणी का मार्ग लेता है। यह सटीक निर्भरता संस्करणों yarn.lockको बचाने के लिए फ़ाइल बनाता है । यार्न में उस फ़ाइल के होने से संस्करणों को हल करने के बजाय संग्रहीत संस्करणों का उपयोग किया जाएगा । यह रणनीति गारंटी देती है कि ऊपर वर्णित कोई भी समस्या नहीं है।yarn.lockpackage.json
yarn.lockके समान है npm-shrinkwrap.jsonजो npm shrinkwrapकमांड द्वारा बनाया जा सकता है । इन दो फ़ाइलों के बीच अंतर को समझाते हुए इस उत्तर को जांचें ।
yarn.lockरहा हूं कि अभी और फिर अपडेट किया जा रहा है, क्या आप जानते हैं कि ऐसा क्यों और कब yarnहोता है?
yarnअपडेट yarn.lock, जिसमें yarn installपैकेज में बदलाव के बिना चल रहा है । Windows में चल रहे यार्न को यार्न में परिवर्तित करने के लिएyarn install --frozen-lockfile सुझाव के अनुसार उपयोग करना। (या इसके माध्यम से कॉन्फ़िगर करना ) सबसे अच्छा शर्त की तरह लगता है। .yarnrc
package-lock.jsonऔर एक है npm ci। यही कारण है कि कार्यप्रवाह अनुरूप यार्न की है yarn.lockऔर yarn install --frozen-lockfile।
मुझे लगता है कि हां, क्योंकि यार्न का अपना यार्न.लॉक फ़ाइल है: https://github.com/yarnpkg/yarn
यह नियतात्मक पैकेज निर्भरता संकल्प के लिए उपयोग किया जाता है।
तुम्हे करना चाहिए:
yarn install --frozen-lockfileऔर नहीं yarn install।(मैंने फ्रोजन-लॉकफाइल डिफ़ॉल्ट व्यवहार करने के लिए मामला बनाने के लिए यार्न के इश्यू ट्रैकर पर एक टिकट खोला, # 4147 देखें )।
फ़ाइल frozen-lockfileमें ध्वज को सेट न करने के लिए सावधान रहें .yarnrcक्योंकि इससे आप पैकेज.जॉन और यार्न.लॉक फ़ाइल को सिंक करने में सक्षम होंगे। जीथूब पर संबंधित यार्न का मुद्दा देखें
yarn installअपने यार्न को अनलॉक कर सकते हैं। अप्रत्याशित रूप से , रिपीटेबल के यार्न के दावे शून्य और शून्य बनाता है। आपको केवल yarn installयार्न आरंभ करने और इसे अपडेट करने के लिए उपयोग करना चाहिए ।
इसके अलावा, esp। बड़ी टीमों में, आप यार्न लॉक में बदलाव के चारों ओर केवल इसलिए बहुत शोर कर सकते हैं क्योंकि एक डेवलपर अपनी स्थानीय परियोजना स्थापित कर रहा था।
अधिक जानकारी के लिए, npm के पैकेज- lock.json के बारे में मेरे जवाब पर पढ़ें जो यहां भी लागू होता है।
यह भी हाल ही में यार्न स्थापित करने के लिए डॉक्स में स्पष्ट किया गया था :
yarn installस्थानीय नोड_मॉडल्स फ़ोल्डर में package.json के भीतर सूचीबद्ध सभी निर्भरताएं स्थापित करें।
yarn.lockफ़ाइल के रूप में इस का उपयोग किया जाता है:
- यदि यार्न .लॉक मौजूद है और पैकेज.जॉन में सूचीबद्ध सभी निर्भरता को पूरा करने के लिए पर्याप्त है, यार्न।लॉक में दर्ज किए गए सटीक संस्करण स्थापित किए गए हैं, और यार्न ।लॉक अपरिवर्तित होंगे। यार्न नए संस्करणों के लिए जाँच नहीं करेगा।
- यदि यार्न .लॉक अनुपस्थित है, या पैकेज में सूचीबद्ध सभी निर्भरताओं को पूरा करने के लिए पर्याप्त नहीं है। उदाहरण के लिए (उदाहरण के लिए, यदि आप मैन्युअल रूप से package.json पर निर्भरता जोड़ते हैं), यार्न उपलब्ध नवीनतम संस्करणों के लिए दिखता है जो पैकेज में बाधाओं को संतुष्ट करते हैं। .json। परिणाम यार्न को लिखे गए हैं।
यदि आप यार्न को सुनिश्चित करना चाहते हैं। अपडेट अपडेट नहीं है, तो उपयोग करें
--frozen-lockfile.
--frozen-lockfileअगर किसी को मैन्युअल रूप से बाद में चलने के बिना package.json अद्यतन है yarn installऔर अद्यतन करने से। इसलिए एक CI उस झंडे का उपयोग करना चाह सकता है, लेकिन डेवलपर्स को ऐसा नहीं करना चाहिए क्योंकि यह मुद्दों को छुपाता है।
yarn.lockफाइलों से yarn install, या तो पुल अनुरोधों को ब्लोट करने, या अनावश्यक मर्ज संघर्षों के कारण, या एक टूटी हुई लाइब्रेरी को खींचकर अधिक परेशानी हुई । (केवल इसलिए कि एक पुस्तकालय सेमर का उपयोग करता है, इसका मतलब यह नहीं है कि एक पैच / मामूली अपडेट आपके ऐप को नहीं तोड़ देगा - मैं वहां गया हूं)। मुझे लगता है कि अद्यतन yarn.lockकरना केवल एक मैनुअल कदम होना चाहिए, यही कारण है कि मैं अपने देव मशीन पर भी भरोसा करता हूं yarn install --frozen-lockfile(और npm ciएनपीएम परियोजनाओं पर) क्योंकि यह विश्वसनीय और निर्धारक है।
yarn.lockअप्रत्याशित रूप से अपडेट होने के साथ कोई समस्या नहीं हुई है (अक्टूबर 2016 के बाद से इसका उपयोग किया गया था)। यह हमेशा एक उपयोगकर्ता है जो मैन्युअल रूप से कुछ कर रहा है या एक घटिया पोस्ट-इंस्टॉल स्क्रिप्ट है। यही कारण है कि मैं एनपीएम पर एनपीआर को प्राथमिकता देता हूं (एनपीएम किसी भी ऑल टाइम को अपडेट करता है जो वह चाहता है)। मुझे लगता है कि मैं उन मुद्दों पर नहीं चलने के लिए खुद को भाग्यशाली समझूंगा।
मेरे अनुभव से मैं कहूँगा हाँ हमें yarn.lockफ़ाइल करना चाहिए । यह सुनिश्चित करेगा कि, जब अन्य लोग आपके प्रोजेक्ट का उपयोग करेंगे तो उन्हें वैसी ही निर्भरता मिलेगी जैसी आपकी परियोजना से अपेक्षित थी।
जब आप या तो यार्न या यार्न ऐड चलाते हैं, तो यार्न आपके पैकेज की रूट डायरेक्टरी के भीतर यार्न.लॉक फ़ाइल उत्पन्न करेगा। आपको इस फ़ाइल को पढ़ने या समझने की आवश्यकता नहीं है - बस इसे स्रोत नियंत्रण में देखें। जब अन्य लोग npm के बजाय यार्न का उपयोग करना शुरू करते हैं, तो यार्न ।लॉक फ़ाइल यह सुनिश्चित करेगी कि उन्हें ठीक वैसी ही निर्भरता मिले जैसी आपके पास है।
यह तर्क हो सकता है, कि हम इसे बदल कर प्राप्त कर सकते हैं ^के साथ --। हां हम कर सकते हैं, लेकिन सामान्य तौर पर, हमने देखा है कि अधिकांश npmपैकेज ^संकेतन के साथ आते हैं , और हमें स्थैतिक निर्भरता संस्करण को सुनिश्चित करने के लिए मैन्युअल रूप से नोटेशन को बदलना होगा। लेकिन अगर आप उपयोग करते हैं, तोyarn.lock होगा तो यह प्रोग्राम आपके सही संस्करण को सुनिश्चित करेगा।
जैसा कि एरिक इलियट ने यहां कहा
.Gitignore यार्न मत करो। यह "मेरी मशीन पर काम करता है" बग से बचने के लिए निर्धारक निर्भरता संकल्प सुनिश्चित करना है।
हाँ, आपको यह करना चाहिए। यार्न.लॉक फ़ाइल के बारे में अधिक जानकारी के लिए, यहां आधिकारिक डॉक्स देखें
हाँ! yarn.lockऐसे किसी भी डेवलपर की जांच होनी चाहिए जो निर्भरता स्थापित करता है, ठीक उसी आउटपुट को प्राप्त करें! साथ NPM [अक्टूबर 2016 में उपलब्ध था] , उदाहरण के लिए, आप एक हो सकता है patchसंस्करण (कहना 1.2.0) स्थानीय स्तर पर स्थापित करते हुए एक नया डेवलपर एक ताजा चल रहा installएक अलग संस्करण (1.2.1) मिल सकता है।
--save-exactnpm का उपयोग करते समय बचत करते हैं, तो आप उसी व्यवहार को प्राप्त कर सकते हैं।
yarn upgradeकमांड खेलना आता है। यह कमांड सभी पैकेजों को अपग्रेड करेगा और लॉक फाइल को फिर से बनाएगा। इसलिए, उदाहरण के लिए, यदि आप उत्पादन के लिए एक ऐप को तैनात कर रहे हैं और निर्भरता को स्थापित करने की आवश्यकता है तो यह ऐसा होगा जो रिपॉजिटरी से नीचे खींची गई लॉक फ़ाइल पर आधारित है। yarn upgradeजब तक आप स्पष्ट रूप से निर्भरता की जानकारी को बदलना नहीं चाहते (और इस प्रकार एक नई लॉक फाइल करना चाहते हैं) तब तक आपको कभी नहीं चलना चाहिए ।
yarn installसमान संस्करण सुनिश्चित नहीं करेंगे। ही yarn install --frozen-lockfileकरता है।