2016-10-14 18 views
5

में स्क्रिप्ट ऑब्जेक्ट पर "यार्न रन" चलाने में समस्या मुझे जावास्क्रिप्ट के लिए फेसबुक के पैकेज मैनेजर yarn द्वारा प्रदत्त run कमांड का उपयोग करने में समस्या हो रही है।पैकेज.जेसन

वर्तमान में मेरी package.json फ़ाइल में मेरे पास scripts ऑब्जेक्ट के लिए निम्न है।

"scripts": { 
    "lint": "./node_modules/.bin/eslint --ignore-pattern dist ." 
} 

जब मैं निम्न आदेश चला, यह npm run lint अपेक्षा के अनुरूप काम करता है। हालांकि, जब मैं yarn से yarn run lint के साथ स्क्रिप्ट चलाता हूं तो मुझे निम्न त्रुटि प्राप्त होती है।

Petesta :: λ -> ~/Git/yarn yarn run lint 
yarn run v0.15.1 
$ "./node_modules/.bin/eslint --ignore-pattern dist ." 
sh: ./node_modules/.bin/eslint --ignore-pattern dist .: No such file or directory 
error Command failed with exit code 127. 
info Visit http://yarnpkg.com/en/docs/cli/run for documentation about this command. 

./node_modules/.bin निर्देशिका मेरी $PATH पर है और मैं नोटिस कि अगर आप date या pwd की तरह एक निष्पादन योग्य है तो yarn run some_script_on_date अपेक्षा के अनुरूप काम करेंगे किया था।

इसे काम करने के लिए एक तरीका है एक अलग खोल फ़ाइल बनाने के लिए जिसमें आप निष्पादित करने का प्रयास कर रहे हैं। आइए इसे ./scripts/lint.sh पर कॉल करें।

#!/bin/bash 

./node_modules/.bin/eslint --ignore-pattern dist . 

और फिर अपने scripts वस्तु में फ़ाइल chmod +x ./scripts/lint.sh

अब पर इस आदेश को चलाने के निम्न पंक्ति जोड़ें।

"new_lint": "./scripts/lint.sh" 

और अब yarn run new_lint अपेक्षित तरीके से चलना होगा।

क्या मुझे कुछ याद आ रहा है या यह है कि yarn में कॉलिंग स्क्रिप्ट कैसे की जानी चाहिए? मैं npm के साथ कमांड चलाने के लिए चाहूंगा।

उत्तर

3

मुझे एक समस्या मिली जो मुझे विश्वास है: https://github.com/yarnpkg/yarn/pull/809

यार्न एनपीएम स्क्रिप्ट में रिक्त स्थान को समझ में नहीं आया। मुझे लगता है कि यह अगले रिलीज में तय किया जाएगा। मैं अपने कंप्यूटर पर इस मुद्दे को पुन: पेश कर सकता हूं (नवीनतम धागा का उपयोग कर: 0.15.1)।

वैसे, आपको अपनी एनपीएम स्क्रिप्ट में ./node_modules/.bin शामिल करने की आवश्यकता नहीं है। दोनों NPM और धागे, डिफ़ॉल्ट रूप से उस फ़ोल्डर के अंदर दिखेगा यहां बताए गए: https://docs.npmjs.com/cli/run-script

तो अपनी स्क्रिप्ट केवल हो सकता है: "lint": "eslint --ignore-pattern dist ."

+0

मैं 'eslint' साथ यह कोशिश की और इसे उस तरह से काम नहीं किया। आदेश नहीं मिला है। वह 'एनपीएम रन' के साथ काम करेगा लेकिन 'यार्न रन' के साथ नहीं। – Petesta

+0

सचमुच दूसरे दिन, लॉल, पैकेज को 'यार्नपक्ग' कहा जाता था और हाल ही में इसे 'यार्न' के लिए हटा दिया गया था। इस बहिष्कार से पहले 'yarnpkg रन कमांड' अपेक्षित के रूप में काम किया। अब नए पैकेज के साथ यह काम नहीं करता है। – Petesta

+0

आह, मैंने गलत समझा। बस रिलीज के लिए इंतजार करना है। – Petesta

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