2016-08-09 5 views
5

के साथ npm {bin: script.js} को कैसे चलाएं, मैं लॉनाश कस्टम बिल्ड के समान कुछ बनाने की योजना बना रहा हूं। तो सामान्य रूप में मैं बताना चाहते हैं की तरह उपयोगकर्ता लिखने आदेश:पैरामीटर

lodash category=collection,function 

कौन सा मैं सिर्फ वर्ग के साथ निर्दिष्ट

मैं NPM बिन के साथ स्क्रिप्ट को चलाने के लिए कैसे कुछ ट्यूटोरियल पढ़ा कस्टम मॉड्यूल बनाना। बस अगर मैं कुछ गलत समझता हूं तो मैं इसे लिखता हूं जो मुझे लगता है।

तो मैं इस भाग के साथ package.json अगर:

"main": "bin/index.js", 
"bin": { 
    "snippet": "bin/index.js" 
}, 

और मैं npm install -g सांत्वना और कमांड टुकड़ा के लिए सुन जब मैं इसे लिखने यह फ़ोल्डर bin में स्क्रिप्ट index.js चलाना चाहिए।

यह हिस्सा दिखता है कि यह मेरे लिए सही तरीके से काम करता है। जब मेरे इंडेक्स.जेएस में कुछ आसान है i.e. console.log('It Works')

मानक स्थिति में आप उपयोगकर्ता को स्क्रिप्ट को पैरामीटर पास करने देना चाहते हैं। तो मुझे पता चला कि सभी पैरामीटर variabile process.argv में होना चाहिए।

process.argv संपत्ति कमांड लाइन तर्क पारित कर दिया जब Node.js प्रक्रिया शुरू की गई थी जिसमें एक सरणी देता है। पहला तत्व प्रक्रिया होगी .execPath। दूसरा तत्व जावास्क्रिप्ट फ़ाइल निष्पादित करने के लिए पथ पथ होगा। शेष तत्व कोई अतिरिक्त कमांड लाइन तर्क होंगे।

तो मैं बस console.log इसे और स्क्रिप्ट चलाता हूं।

  1. अगर मैं आदेश के माध्यम से स्क्रिप्ट चलाने snippet -f -a आउटपुट है: [ 'node', 'path/to/file' ]

  2. तो मैं node bin/index.js -f -a आउटपुट के माध्यम से स्क्रिप्ट चलाने है: [ 'node', 'path/to/file', '-f', '-a' ]

मुझे लगता है कि समझ में नहीं, अपने ही स्क्रिप्ट लेकिन विभिन्न आउटपुट। हालांकि मैं कोशिश करता हूं कि जब मैं बिन कमांड के माध्यम से स्क्रिप्ट को कॉल करता हूं तो यह कभी भी पैरामीटर पास नहीं करता है।

क्या कोई ऐसा व्यक्ति है जिसने इसका अनुभव किया है? और मुझे सलाह दीजिए कि मैं क्या गलत कर रहा हूं?

या वैकल्पिक रूप से ऐसा करने का कोई और तरीका है?

किसी भी सलाह के लिए धन्यवाद।

+0

यह ठीक दिखता है। क्या आपने अन्य झंडे, या लंबे लोगों के साथ कोशिश की? शायद आप आरक्षित नामों का उपयोग कर रहे हैं। (यानी [मोचा स्रोत स्क्रिप्ट] (https://github.com/mochajs/mocha/blob/master/bin/mocha))। क्या आप कुछ उदाहरण कोड दिखा सकते हैं? – Dario

+0

हे @ डारियो आपके उत्तर के लिए धन्यवाद। मैंने यादृच्छिक अन्य पात्रों के साथ कोशिश की। मैंने बस mz package.json संपादित किया और उसी फ़ाइल में रन टेस्ट जोड़ें। यहां तक ​​कि यह सही ढंग से काम करता है, उदाहरण के लिए यदि मैं एनपीएम रन टेस्ट श्रेणी = यह आईएसओएन कहता हूं, तो यह मुझे यह तर्क दिखाता है, अगर मैं स्निपेट के साथ एनपीएम रन टेस्ट को प्रतिस्थापित करता हूं तो यह काम नहीं करता है – Andurit

+0

हे @ डारियो मुझे एक समाधान मिला :) सुनिश्चित नहीं है कि मैं इसे सबसे आसान तरीके से ठीक करें लेकिन यह काम करता है। मदद के लिए शुक्रिया – Andurit

उत्तर

1

इसमें कुछ समय लगता है हालांकि मेरे पास अब कोई समाधान है इसलिए उम्मीद है कि यह बाद में किसी की मदद करेगी।

कहाँ एक समस्या थी:

मैंने देखा है कि मेरी खिड़कियां .js फ़ाइल NODE.js करने के लिए सेट चलाने के लिए डिफ़ॉल्ट प्रोग्राम है और क्योंकि यह पाठ्यक्रम सभी .js फ़ाइलों पैरामीटर के बिना खोल रहे हैं की डिफ़ॉल्ट सेटिंग है।

तो मेरे मामले में प्रत्येक .js फ़ाइल NODE के साथ खुलती है, इससे कोई फर्क नहीं पड़ता कि, मैं इसे PSPAD या इसी तरह के कुछ के साथ खोलने के लिए बदलने की कोशिश करता हूं लेकिन फ़ाइल को निष्पादित करने के बजाय यह मूल रूप से खुला संपादक है।

मैं इसे कैसे ठीक किया: इसके बजाय

  1. सीधे क्रियान्वित .js का उपयोग कर कुछ के साथ की मैं अपने ./bin/index.js बाइनरी फ़ाइल बनाने के (मूल रूप से हटा दिया .js प्रत्यय)
  2. जोड़ा गया #!/usr/bin/env nodeindex फ़ाइल
  3. के शीर्ष पर
  4. package.json पर जाता है और ./bin/index.js पर ./bin/index
पर सभी निर्भरता बदल गया

वोला! यह काम करता है :)

पेज। जैसा कि मैंने शुरुआत में उल्लेख किया है, मेरा मानना ​​है कि इसे .js के साथ चलाने का विकल्प भी है लेकिन मैं इसे ढूंढ नहीं पाया। तो कृपया अगर कोई मुझे मिलेगा तो मुझे बताएं। धन्यवाद