2012-05-01 17 views
29

Cucumber.js के लिए स्क्रिप्ट एक कमांड लाइन की आपूर्ति कर रहा है "बाइनरी" जो एक सरल .js एक मामला अनुदेश युक्त फ़ाइल है:NPM पैकेज 'बिन' विंडोज

#!/usr/bin/env node 
var Cucumber = require('../lib/cucumber'); 
// ... 

द्विआधारी साथ package.json में निर्दिष्ट किया जाता "bin" कॉन्फ़िगरेशन कुंजी:

{ "name" : "cucumber" 
, "description" : "The official JavaScript implementation of Cucumber." 
// ... 
, "bin": { "cucumber.js": "./bin/cucumber.js" } 
// ... 

यह सब POSIX सिस्टम पर अच्छी तरह से काम करता है। विंडोज़ पर Cucumber.js चलाते समय किसी ने an issue की सूचना दी।

असल में, .js फ़ाइल विंडोज के जेस्क्रिप्ट दुभाषिया (नोड.जेएस नहीं) के माध्यम से निष्पादित की जाती है और यह शेबैंग निर्देश के कारण वाक्यविन्यास त्रुटि फेंकता है।

मेरा प्रश्न है: "बाइनरी" स्क्रिप्ट स्थापित करने का अनुशंसित तरीका क्या है जो यूनिक्स और विंडोज सिस्टम दोनों पर काम करता है?

धन्यवाद।

उत्तर

44

विंडोज शेबैंग लाइन #!/usr/bin/env node को अनदेखा करता है और इसे .js फ़ाइल एसोसिएशन के अनुसार निष्पादित करेगा। अपनी स्क्रिप्ट को नोड

node hello.js 

ps के साथ कॉल करने के बारे में स्पष्ट रहें। पेडेंट्री: Shebangs POSIX मानक में नहीं हैं लेकिन वे अधिकांश * निक्स सिस्टम द्वारा समर्थित हैं।


आप NPM की अपनी परियोजना पैकेज हैं, तो package.json में 'बिन' फ़ील्ड का उपयोग करें। तब विंडोज पर, NPM एक .cmd आवरण ओर के साथ अपनी स्क्रिप्ट ताकि उपयोगकर्ताओं को कमांड लाइन

hello 

शिम सही बनाने के लिए NPM की से यह निष्पादित कर सकते हैं the script must have the shebang line#!/usr/bin/env node

+4

समस्या ".js" प्रत्यय के साथ समाप्त होने वाली बाइनरी स्क्रिप्ट नाम थी। एनपीएम "बिन" कॉन्फ़िगरेशन निर्देश के आधार पर एक यूनिक्स-अनुकूल 'cucumber.js' और' cucumber.js.cmd' विंडोज-फ्रेंडली बाइनरी दोनों बनाता है। विंडोज़ "एक्सटेंशन" फ़ाइल को कैसे प्रबंधित करता है, जब किसी ने 'node_modules \ .bin \ cucumber.js' टाइप किया था, तो यह' .cmd 'फ़ाइल के बजाय जेस्क्रिप्ट के माध्यम से' .js' फ़ाइल चला रहा था। पैडेंटिक पोस्टस्क्रिप्ट के लिए धन्यवाद;) – jbpros

+0

मैं बिल्कुल इसी मुद्दे में भाग गया। मैं एक समाधान खोजने की कोशिश कर रहा हूं जिसके लिए मुझे विंडोज उपयोगकर्ताओं को एक अलग कमांड टाइप करने की आवश्यकता नहीं है। विंडोज स्क्रिप्ट होस्ट में एनपीएम-जेनरेटेड .cmd को पूर्व-खाली करने वाली जावास्क्रिप्ट फ़ाइलें निष्पादित की जाती हैं; मुझे आशा है कि नोड-संचालित सीएलआई को प्रॉक्सी करने के लिए इसका लाभ उठाने का एक तरीका है: http: // stackoverflow।कॉम/प्रश्न/241130 9 1/समकक्ष-यूनिक्स-निष्पादन-इन-जेएसक्रिप्ट-विंडोज-स्क्रिप्ट-होस्ट – ELLIOTTCABLE

+0

मैं इसे माइक्रोसॉफ्ट जेस्क्रिप्ट के बजाय नोडजेज़ द्वारा कैसे निष्पादित कर सकता हूं? यहां तक ​​कि इसे 'नोड'/index.js' में बदलना भी इसे काम नहीं करता है। सुधार: –

5

अपने "बिन" स्थापित हो जाएगा, चाहिए "ककड़ी" एनपीएम "नोड% SCRIPTNAME%" को इंगित करने वाली "ककड़ी" या "ककड़ी.cmd" फ़ाइल बनायेगी। पूर्व पॉज़िक्स वातावरण के लिए, बाद वाले विंडोज़ के उपयोग के लिए ... यदि आप "जेएस" निष्पादन योग्य नाम का हिस्सा बनना चाहते हैं ... आपको इसके बजाय एक हाफ़ोन का उपयोग करना चाहिए ... "ककड़ी-जेएस" ... एक .js फ़ाइल होने से आपके मामले में .js.cmd से पहले आएगा जिससे WScript दुभाषिया इसे जेस्क्रिप्ट फ़ाइल के रूप में चलाने के लिए प्रेरित करता है, नोड स्क्रिप्ट नहीं।

मैं एक अच्छा उदाहरण के लिए coffee-script's package.json पर विचार करने का सुझाव दूंगा।

{ 
    "name":   "coffee-script", 
    "description": "Unfancy JavaScript", 
    "keywords":  ["javascript", "language", "coffeescript", "compiler"], 
    "author":  "Jeremy Ashkenas", 
    "version":  "1.4.0", 
    "licenses":  [{ 
    "type":  "MIT", 
    "url":  "https://raw.github.com/jashkenas/coffee-script/master/LICENSE" 
    }], 
    "engines":  { 
    "node":  ">=0.4.0" 
    }, 
    "directories" : { 
    "lib" : "./lib/coffee-script" 
    }, 
    "main" : "./lib/coffee-script/coffee-script", 
    "bin":   { 
    "coffee":  "./bin/coffee", 
    "cake":  "./bin/cake" 
    }, 
    "scripts": { 
    "test": "node ./bin/cake test" 
    }, 
    "homepage":  "http://coffeescript.org", 
    "bugs":   "https://github.com/jashkenas/coffee-script/issues", 
    "repository": { 
    "type": "git", 
    "url": "git://github.com/jashkenas/coffee-script.git" 
    }, 
    "devDependencies": { 
    "uglify-js": ">=1.0.0", 
    "jison":  ">=0.2.0" 
    } 
}
संबंधित मुद्दे