2017-05-10 39 views
9

yarn install -h के साथ वैश्विक पैकेज को कैसे स्थापित करें, यह बताता है कि -g (वैश्विक) विकल्प DEPRECATED है। मुझे यह इंगित करना चाहिए कि मुझे वैश्विक स्तर पर स्थापित करने के लिए पैकेजों का एक गुच्छा (package.json/yarn.lock फाइलों से) चाहिए?यार्न

विकल्प मैंने देखा:

  • yarn global [command] ऐसे ls और add नहीं बल्कि install के रूप में बातें है। add केवल सही पैकेज नामों के साथ काम करता है, अगर मैं सही ढंग से समझता हूं। मेरे पास पहले से ही मेरी yarn.lock फ़ाइल तैयार है, मैं कमांड लाइन पर खुद को दोहराना नहीं चाहता हूं।
  • yarn global add प्रत्येक पैकेज एक-एक करके। अब संकुल की बजाय पैकेज की मेरी सूची अनिवार्य होगी।

Especifically, मैं उन संकुल में से एक से एक निष्पादन उपयोग करना चाहते हैं।

उत्तर

9

मुझे यह कैसे इंगित करना चाहिए कि मुझे पैकेजों का एक गुच्छा (पैकेज.जेसन/यार्न.लॉक फाइलों से) वैश्विक स्तर पर स्थापित किया जाना चाहिए?

आप नहीं हैं। वैश्विक रूप से स्थापित करना निराश है, और बहुत कम स्थितियां हैं जहां यह आवश्यक है, या यहां तक ​​कि सहायक भी है।

रूप the documentation में टिप्पणी की थी

संकुल के विशाल बहुमत के लिए यह वैश्विक निर्भरता है, क्योंकि वे निहित हैं एक बुरा व्यवहार माना जाता है। स्थानीय रूप से अपनी सभी निर्भरताओं को जोड़ना बेहतर होता है ताकि वे स्पष्ट हों और आपकी परियोजना का उपयोग करने वाले किसी और को निर्भरता का एक ही सेट मिल जाए।

यदि आप एक सीएलआई उपकरण का उपयोग करने की कोशिश कर रहे हैं जिसमें एक बिन है तो आप इन्हें अपने ./node_modules/.bin निर्देशिका में एक्सेस कर सकते हैं।

अगर वहाँ स्थितियों में, जहां आप कर यह विश्व स्तर पर स्थापित करने के लिए, yarn global add उपयोग करना चाहते हैं, लेकिन कर रहे हैं, आसानी से निर्भरता की एक बड़ी सूची स्थापित करने के लिए की उम्मीद नहीं है विश्व स्तर पर यह, डिजाइन द्वारा करना मुश्किल है क्योंकि यह अच्छा विचार नहीं।

इसके बजाय

:

  • सब कुछ स्थानीय स्तर पर स्थापित है, तो प्रत्येक परियोजना ./node_modules/.bin से
  • कॉल बाइनरी अलग है जहां संभव
  • से बचने के लिए एक सुविधा वैश्विक इंस्टॉल किए जाने-रूप में नज़र आते हैं, लेकिन वह नहीं जिसका आप पर भरोसा करना चाहिए ।
+0

आपकी प्रतिक्रिया के लिए धन्यवाद कर सकते हैं! निश्चित रूप से, यह मुझे समझ में आता है कि यार्न कुछ स्थानीय-पहली तरह की सोच को गोद लेता है क्योंकि अंत में, इस तरह प्रत्येक उगाए जाने वाले डेवलपर को अपनी निर्भरताओं का उपयोग करने की आवश्यकता होती है। मेरा उपयोग केस-इस पर विस्तार से-क्या मैं एक डॉकर छवि बना रहा हूं जिसका उपयोग एक परियोजना (गिटलैब) सीआई चरण के हिस्से के रूप में एक परियोजना को लिंट करने के लिए किया जाता है। इसलिए मुझे वास्तव में अलगाव की आवश्यकता नहीं है क्योंकि इस छवि का एकमात्र उद्देश्य 'eslint.js' निष्पादन योग्य का उपयोग करना है। – jleeothon

2

रुचि रखने वालों के लिए, यहाँ स्थापित करने और वैश्विक अनुप्रयोगों यार्न के माध्यम से स्थापित प्रबंधन करने के लिए एक तरीका है।

पहले उदाहरण ~/.yarn-global के लिए एक निर्देशिका जो आवेदन पत्र में शामिल होंगे, बनाएँ:

mkdir ~/.yarn-global 
cd ~/.yarn-global 

तो यहां से अपने आवेदन स्थापित: अंत में अपने प्रोफ़ाइल फ़ाइल, यानी .bashrc या .bash_profile खोलने

yarn add yourapp 

और बिन निर्देशिका में पथ जोड़ें:

export PATH="$HOME/.yarn-global/node_modules/.bin:$PATH" 

अब से, इस निर्देशिका में स्थापित कोई भी एप्लिकेशन आपके खोल में कहीं से भी उपलब्ध होगा।

एक बार ऐसा करने के बाद, आप yarn-global उपयोगिता स्क्रिप्ट भी बना सकते हैं जो केवल इस .र्न-वैश्विक निर्देशिका में ही काम करेगा। उदाहरण के लिए:

sudo vim /usr/bin/yarn-global 
sudo chmod 755 /usr/bin/yarn-global 

और स्क्रिप्ट सामग्री होगा:

#!/bin/bash 
cd "$HOME/.yarn-global" 
yarn $1 "$2" 

नहीं, तुम yarn-global add someapp, yarn-global upgrade someapp, आदि

संबंधित मुद्दे