मैं npm install
के बजाय yarn install
का उपयोग करके बल देना चाहता हूं। मैं npm install
में त्रुटि उठाना चाहता हूं। package.json
में मुझे क्या करना चाहिए?नोड मॉड्यूल के लिए एनपीएम इंस्टॉल के बजाय बल यार्न इंस्टॉल करें?
उत्तर
अपने preinstall स्क्रिप्ट में आप एक मिनी नोड स्क्रिप्ट जो सभी प्लेटफार्मों पर काम करना चाहिए, pgrep
की तरह (और अन्य आम * nix आदेश और ऑपरेटरों) चला सकते हैं बातें जबकि विंडोज़ पर काम नहीं करेगा जब तक कि विंडोज 10 को व्यापक रूप से गोद लेने के लिए नहीं मिला है।
मैंने निम्न स्क्रिप्ट का परीक्षण नोड v4.7.0 (npm v2.15.11) और नोड v7.2.1 (npm v3.10.10) पर किया। मुझे लगता है कि यह सब कुछ के बीच में काम करता है। यह वर्तमान में चल रही प्रक्रिया पर पर्यावरण चर की जांच करके काम करता है - npm_execpath
वर्तमान में चल रहे "एनपीएम" स्क्रिप्ट का पथ है। यार्न के मामले में, इसे /path/to/yarn/on/your/machine/yarn.js
पर इंगित करना चाहिए।
"scripts": {
"preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('You must use Yarn to install, not NPM')\""
}
नोट: Alexander's answer से अपडेट - इस प्रयोक्ता
npm install --ignore-scripts
का उपयोग करता है, तो काम नहीं करेगा। आप तारीफ के काबिल है।
आप NPM स्क्रिप्ट के बारे में अधिक पढ़ सकते हैं: https://docs.npmjs.com/misc/scripts
जहाँ तक npm_execpath
वातावरण चर के रूप में है, जबकि दस्तावेज नहीं मुझे शक है कि यह कभी बदल जाएगा। यह npm
की कई प्रमुख रिलीज के लिए आसपास रहा है और यह "वास्तव में इस के लिए बेहतर नाम नहीं है" परीक्षण पास नहीं करता है।
&& एनपीएम स्क्रिप्ट में ठीक है क्योंकि उन्हें कमांड प्रॉम्प्ट द्वारा निष्पादित किया जाता है, पावरहेल नहीं। – cchamberlain
आह, धन्यवाद। मैंने सोचा कि विंडोज़ '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'है। मैंने अपना जवाब अपडेट कर लिया है। –
उद्धरण विंडोज़ पर मायने रखता है और अगर आप तर्क के लिए सिंगल कोट्स का उपयोग करते हैं तो एक त्रुटि देगी: '" प्रीइंस्टॉल करें ":" नोड-ई \ "अगर (process.env.npm_execpath.indexOf ('yarn') == = -1) नई त्रुटि फेंक दें ('आपको स्थापित करने के लिए यार्न का उपयोग करना चाहिए, न कि एनपीएम') \ "" – Thomas
आप इसे प्राप्त करने के लिए preinstall हुक के साथ कुछ खोल स्क्रिप्ट के साथ उपयोग कर सकते हैं।
नमूना package.json:
"scripts": {
"preinstall": "pgrep npm && exit 1"
}
यह ओएसएक्स पर मेरे लिए काम नहीं करता क्योंकि यह झूठी सकारात्मकता उत्पन्न करता है। उदाहरण के लिए, टर्मिनल में सीधे 'pgrep npm' चलाना एक प्रक्रिया आईडी देता है क्योंकि मेरे पास एक सर्वर चल रहा है जो एक एनपीएम स्क्रिप्ट के साथ शुरू किया गया था। –
अन्य उत्तरों की तरह, मैं preinstall
script का उपयोग करने और अपने पर्यावरण की जांच करने की सलाह दूंगा। एक पोर्टेबल समाधान के लिए यदि कोई अन्य एनपीएम प्रक्रिया चलती है, तो node -e 'JS_CODE'
का उपयोग करना सबसे अच्छा विकल्प है, तो झूठी-सकारात्मक नहीं होगी।
कि जे एस कोड में, आप पैकेज प्रबंधक के पथ की जांच निम्नलिखित का उपयोग कर सकते हैं:
process.env.npm_execpath
यार्न के द्विआधारी yarn.js
npm-cli.js
NPM द्वारा इस्तेमाल किया की तुलना में है। हम यह जांचने के लिए निम्न की तरह एक regex का उपयोग कर सकते हैं कि यह स्ट्रिंग yarn.js
के साथ समाप्त होती है।
/yarn\.js$/
इस regex उपयोग करके, हम यकीन है कि यह गलती से कहीं पहले फाइल सिस्टम में मेल नहीं खाएगी हो सकता है। सबसे अधिक संभावना yarn
फ़ाइल पथ में प्रकट नहीं होगा, लेकिन आप कभी भी सुनिश्चित नहीं हो सकते हैं।
npm install --ignore-scripts
मैंने:
{
"name": "test",
"version": "1.0.0",
"scripts": {
"preinstall": "node -e 'if(!/yarn\\.js$/.test(process.env.npm_execpath))throw new Error(\"Use yarn\")'"
}
}
बेशक, उपयोगकर्ता अभी भी संपादन JSON या --ignore-scripts
विकल्पों का उपयोग किया इस चेक के आसपास प्राप्त करने में सक्षम हो जाएगा:
यहाँ एक न्यूनतम उदाहरण है बस एक मॉड्यूल जारी किया जिसमें इसके लिए एक सीएलआई शामिल है (एनपीएम preinstall
स्क्रिप्ट के लिए उपयोगी): https://github.com/adjohnson916/use-yarn
इसके अलावा, मैंने अभी भी एक हेल जारी किया है https://github.com/adjohnson916/danger-yarn-lock
भी देखें यहाँ चर्चा: Danger के लिए प्रति सीआई पर yarn.lock
परिवर्तन लापता के लिए जाँच करने
- 1. एनपीएम इंस्टॉल
- 2. एनपीएम इंस्टॉल
- 3. एनपीएम इंस्टॉल
- 4. एनपीएम इंस्टॉल करें जिसके लिए विंडोज
- 5. होमब्री एनपीएम इंस्टॉल:
- 6. एनपीएम इंस्टॉल पैकेज.जेसन
- 7. एनपीएम इंस्टॉल: विंडोज 10
- 8. एनपीएम इंस्टॉल: नोड-वेफ नहीं मिला। क्या करें?
- 9. एनपीएम इंस्टॉल त्रुटि ENOTDIR
- 10. एनपीएम इंस्टॉल कमांड में त्रुटि
- 11. ब्रू, यार्न और एनपीएम
- 12. 'एनपीएम इंस्टॉल' जेनकिंस पर आउटपुट
- 13. कोणीय 2 क्विकस्टार्ट एनपीएम इंस्टॉल
- 14. ब्रू इंस्टॉल नोड को
- 15. एनपीएम इंस्टॉल - पर्याप्त अनुमतियों के साथ बिल्ड स्क्रिप्ट कैसे चलाएं?
- 16. यार्न उबंटू 16.04 इंस्टॉल करें (लिनक्स मिंट 18.1)
- 17. एनपीएम इंस्टॉल काम नहीं करता है जब npm इंस्टॉल cordova
- 18. ऑफ़लाइन होने पर एनपीएम पैकेज कैसे इंस्टॉल करें?
- 19. एनपीएम: एनपीएम इंस्टॉल fetchMetaData पर लटकता है -> addTmpTa
- 20. npm इंस्टॉल करें: package.json निर्दिष्ट करें?
- 21. एनपीएम इंस्टॉल करते समय अनुरोध दिखाएं
- 22. लार्वेल "एनपीएम इंस्टॉल" डाउनलोड 30.000+ आइटम
- 23. "एनपीएम इंस्टॉल --global" और "--save" एक साथ?
- 24. अपना मॉड्यूल बनाएं और इंस्टॉल करें
- 25. इंस्टॉल करें
- 26. एंड्रॉइड के लिए एक्समरिन मोनो इंस्टॉल करें
- 27. पायथन इंस्टॉल xlwt मॉड्यूल त्रुटि
- 28. एनपीएम इंस्टॉल: कब - बिन-लिंक का उपयोग करें?
- 29. Pymssql इंस्टॉल करें त्रुटि
- 30. इसके बजाय यार्न/एनपीएम (नेट कोर एमवीसी) VS2017
क्या त्रुटि आप के साथ सामना कर रहे हैं ** NPM स्थापित * * –
यह संभवतः एक त्रुटि नहीं है जिसे वह सामना कर रहा है, बल्कि यह सुनिश्चित करने की इच्छा है कि उसकी पूरी टीम यार्न का उपयोग कर रही है। एक टीम पर काम करते समय यार्न एनपीएम के कारण होने वाली कई समस्याओं को हल करता है। –