गुलप के बारे में 2 पुस्तिकाओं में कहा गया है कि मुझे पहले विश्व स्तर पर (झंडे के साथ) और फिर स्थानीय स्तर पर एक बार फिर से गुलाल लगाने की जरूरत है। मैं इसकी क्या जरूरत है?
गुलप के बारे में 2 पुस्तिकाओं में कहा गया है कि मुझे पहले विश्व स्तर पर (झंडे के साथ) और फिर स्थानीय स्तर पर एक बार फिर से गुलाल लगाने की जरूरत है। मैं इसकी क्या जरूरत है?
जवाबों:
एक उपकरण को विश्व स्तर पर स्थापित करते समय इसका उपयोग एक उपयोगकर्ता द्वारा कमांड लाइन उपयोगिता के रूप में कहीं भी किया जा सकता है, जिसमें नोड परियोजनाएं भी शामिल हैं। नोड प्रोजेक्ट के लिए वैश्विक इंस्टॉल खराब हैं क्योंकि वे परिनियोजन को अधिक कठिन बनाते हैं।
npx
उपयोगिता के साथ बंडल npm
5.2
को हल करती है इस समस्या। इसके साथ आप स्थानीय रूप से स्थापित उपयोगिताओं जैसे वैश्विक रूप से स्थापित उपयोगिताओं को लागू कर सकते हैं (लेकिन आपको कमांड को शुरू करना होगा npx
)। उदाहरण के लिए, यदि आप स्थानीय स्तर पर स्थापित करना चाहते हैं, तो आप eslint
ऐसा कर सकते हैं:
npx eslint .
जब एक में इस्तेमाल script
अपने package.json के क्षेत्र, npm
खोज node_modules
और साथ ही विश्व स्तर पर स्थापित मॉड्यूल के रूप उपकरण के लिए, इसलिए स्थानीय स्थापित पर्याप्त है।
तो, अगर आप अपने पैकेज में खुश हैं (
"devDependencies": {
"gulp": "3.5.2"
}
"scripts": {
"test": "gulp test"
}
आदि और npm run test
उसके बाद आपको वैश्विक इंस्टॉल की आवश्यकता नहीं होनी चाहिए।
दोनों तरीके लोगों को आपकी परियोजना के साथ स्थापित करने के लिए उपयोगी होते हैं क्योंकि sudo
आवश्यक नहीं है। इसका मतलब यह भी है कि gulp
जब पैकेज में संस्करण को टकराया जाएगा तो उसे अपडेट किया जाएगा। आगजनी, इसलिए हर कोई आपके प्रोजेक्ट के साथ विकसित होने पर एक ही संस्करण का उपयोग कर रहा होगा।
ऐसा प्रतीत होता है कि विश्व स्तर पर उपयोग किए जाने पर कुछ असामान्य व्यवहार होता है। जब वैश्विक स्थापित के रूप में उपयोग किया जाता है, तो नियंत्रण को पारित करने के लिए स्थानीय रूप से स्थापित गुलप के लिए गुलप दिखता है। इसलिए एक गल्प ग्लोबल इंस्टॉल को काम करने के लिए गल्प लोकल इंस्टॉल की जरूरत होती है। ऊपर दिया गया जवाब अभी भी हालांकि खड़ा है। स्थानीय इंस्टॉल हमेशा वैश्विक इंस्टॉल के लिए बेहतर होते हैं।
./node_modules/.bin/gulp
। तो, तो उपयोग करें ।
gulp
और coffee
इसलिए कमांड मेरे नोड प्रोजेक्ट रूट (जैसे। alias gulp="node_modules/.bin/gulp"
) से काम करते हैं । यदि आवश्यक हो और वैश्विक / स्थानीय संस्करण विरोध न हो तो इस तरह से कमांड का उपयोग करना आसान है।
gulp
, तो यह मुझे निम्न त्रुटि संदेश देता है Local gulp not found in ...
। जहाँ तक मैं समझता हूँ, इसे पहले स्थानीय node_modules को देखना चाहिए और अगर नहीं मिला है तो इसे विश्व स्तर पर स्थापित मॉड्यूल में देखना चाहिए, क्या यह नहीं है? धन्यवाद!
TLDR; यहाँ क्यों है :
इसका कारण यह है क्योंकि आपके स्थानीय रूप से स्थापित संस्करण का उपयोग करके अपने
gulp
को चलाने की कोशिश करता है , यहां देखें । इसलिए गल्प की एक वैश्विक और स्थानीय स्थापना का कारण।gulpfile.js
gulp
अनिवार्य रूप से, जब आप gulp
स्थानीय रूप से स्क्रिप्ट स्थापित करते हैं, तो यह आपके अंदर नहीं है PATH
और इसलिए आप केवल gulp
कमांड टाइप नहीं कर सकते हैं और शेल को खोजने की उम्मीद कर सकते हैं । वैश्विक रूप से इसे स्थापित करने से gulp
स्क्रिप्ट आपके पास पहुंच जाती है PATH
क्योंकि वैश्विक node/bin/
निर्देशिका आपके मार्ग पर सबसे अधिक संभावना है।
हालाँकि, अपने स्थानीय निर्भरता का सम्मान करने के लिए, gulp
अपने स्थानीय रूप से स्थापित संस्करण को चलाने के लिए उपयोग करेगा gulpfile.js
।
gulp
पैकेज node_modules/.bin/gulp
पथ में डालने के लिए आवश्यक है। स्टोरेज सस्ता है लेकिन सिम को अनुकरण करने के लिए एमबी को फेंकना आईएमओ शुद्ध ढिलाई है।
आप gulp
स्थानीय स्तर पर स्थापित विश्व स्तर के साथ लिंक कर सकते हैं
npm link gulp
npm link
।
प्रश्न " हमें वैश्विक और स्थानीय स्तर पर गुलाल लगाने की आवश्यकता क्यों है? " को निम्नलिखित दो प्रश्नों में विभाजित किया जा सकता है:
अगर मैंने पहले से ही इसे विश्व स्तर पर स्थापित किया है तो मुझे स्थानीय रूप से गुलाल लगाने की आवश्यकता क्यों है?
अगर मैंने पहले ही इसे स्थानीय रूप से स्थापित कर लिया है, तो मुझे विश्व स्तर पर गुलाल लगाने की आवश्यकता क्यों है?
कई अन्य लोगों ने अलग-थलग पड़ने वाले सवालों के उत्कृष्ट उत्तर दिए हैं, लेकिन मुझे लगा कि एकीकृत उत्तर में जानकारी को समेकित करना फायदेमंद होगा।
अगर मैंने पहले से ही इसे विश्व स्तर पर स्थापित किया है तो मुझे स्थानीय रूप से गुलाल लगाने की आवश्यकता क्यों है?
स्थानीय रूप से गल्प स्थापित करने का औचित्य कई कारणों से शामिल है:
अगर मैंने पहले ही इसे स्थानीय रूप से स्थापित कर लिया है, तो मुझे विश्व स्तर पर गुलाल लगाने की आवश्यकता क्यों है?
स्थानीय रूप से इंस्टॉल करने से बचने के लिए आप उपयोग कर सकते हैं npm link [package]
, लेकिन लिंक कमांड के साथ-साथ install --global
कमांड --save-dev
विकल्प का समर्थन नहीं करता है जिसका अर्थ है कि विश्व स्तर पर गुलाल को स्थापित करने का एक आसान तरीका नहीं है और फिर आसानी से जो भी संस्करण जोड़ना है आपकी स्थानीय package.json फ़ाइल।
अंत में, मेरा मानना है कि वैश्विक मॉड्यूल का उपयोग करने के विकल्प के लिए आपके सभी प्रोजेक्ट्स में आम टूल की स्थापना की नकल करने से बचने के लिए और अधिक समझ में आता है, विशेष रूप से विकास उपकरण जैसे कि ग्रंट, गुलप, जिश्ट, आदि के मामले में दुर्भाग्य से। लगता है जब आप अनाज के खिलाफ जाते हैं तो आप उपकरण को थोड़ा लड़ते हैं।
यदि node_modules
आपके स्थानीय इंस्टालेशन में फ़ोल्डर आपके पास है तो तकनीकी रूप से आपको इसे विश्व स्तर पर स्थापित करने की आवश्यकता नहीं है PATH
। आम तौर पर यह एक अच्छा विचार नहीं है।
वैकल्पिक रूप से यदि npm test
संदर्भ है gulp
तो आप बस टाइप कर सकते हैं npm test
और यह स्थानीय गल्प चलाएगा।
मैंने कभी भी विश्व स्तर पर गुलाल नहीं लगाया है - मुझे लगता है कि यह खराब रूप है।
मुझे यकीन नहीं है कि अगर हमारी समस्या सीधे तौर पर केवल स्थानीय रूप से स्थापित करने से संबंधित थी। लेकिन हमें खुद पर निर्भरता का एक समूह स्थापित करना था। इससे एक "विशाल" पैकेज बन जाता है। Json और हमें यकीन नहीं है कि यह वास्तव में केवल स्थानीय रूप से गल्प स्थापित करने के लिए एक महान विचार है। हमें अपने निर्माण के माहौल के कारण ऐसा करना पड़ा। लेकिन मैं विश्व स्तर पर गुलाल लगाने की सलाह नहीं दूंगा अगर यह बिल्कुल जरूरी नहीं है। हमें निम्नलिखित ब्लॉग-पोस्ट में वर्णित समान समस्याओं का सामना करना पड़ा
इन समस्याओं में से कोई भी हमारे डेवलपर्स के लिए उनकी स्थानीय मशीनों पर उत्पन्न नहीं होती है क्योंकि वे सभी वैश्विक रूप से स्थापित हैं। निर्माण प्रणाली पर हमें वर्णित समस्याएं थीं। अगर किसी को दिलचस्पी है तो मैं इस मुद्दे पर गहराई से गोता लगा सकता हूं। लेकिन अभी मैं सिर्फ यह उल्लेख करना चाहता था कि यह केवल स्थानीय रूप से गल्प स्थापित करने का आसान रास्ता नहीं है।
सिर्फ इसलिए कि मैंने इसे यहाँ नहीं देखा है, यदि आप MacOS या लिनक्स पर हैं, तो मेरा सुझाव है कि आप इसे अपने PATH (अपने bashrc आदि में) में जोड़ें:
node_modules/.bin
इस सापेक्ष पथ प्रविष्टि के साथ, यदि आप किसी भी नोड परियोजना के रूट फ़ोल्डर में बैठे हैं, तो आप "ग्लोबल इंस्टॉल" या npm run
आदि के बारे में चिंता किए बिना किसी भी कमांड लाइन टूल (एस्लिंट, गल्प, आदि) चला सकते हैं ।
एक बार ऐसा करने के बाद, मैंने कभी भी विश्व स्तर पर एक मॉड्यूल स्थापित नहीं किया है।