2012-12-13 17 views
10

के अंदर कहीं से भी पैकेज.जेसन से स्क्रिप्ट चलाएं मैं पैकेज.जेसन फ़ाइल के अंदर scripts सेक्शन का उपयोग कर रहा हूं ताकि कुछ आदेशों को संग्रहीत किया जा सके जिन्हें मुझे नियमित रूप से चलाना है।एनपीएम: प्रोजेक्ट फ़ोल्डर

"scripts": { 
    "test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html", 
    "rjs": "r.js -o ./js/app.build.js", 
    "less": "lessc -x ./css/app.less > ./css/app.css" 
    } 

हर आदेश में मैं पथ की शुरुआत में एक ./ मिल गया है - यही कारण है कि मैं केवल इस परियोजना के रूट निर्देशिका से npm run-script rjs कॉल कर सकते हैं। पैकेज.जेसन के अंदर प्रोजेक्ट की रूट निर्देशिका का संदर्भ देने का कोई तरीका है ताकि मैं उदा। npm test मेरी परियोजना में कहीं से भी?

उत्तर

0

एक शेल फ़ाइल बनाने पर विचार किया जाता है जो चलता है?

उदाहरण के लिए एक .sh फ़ाइल बनाने यह निष्पादन योग्य (chmod 777 file.sh)

और फिर अपने NodeJS परियोजना रूट में सीडी, सीडी वापस निर्देशिका आप बस छोड़ दिया है में बनाने NPM आदेश चला, और उसके बाद ?

जोड़ने अपने पर्यावरण के लिए स्क्रिप्ट कहीं से भी निष्पादन यह कर देगा ...

वैकल्पिक रूप से कठिन कोडिंग पूरा पथ ठीक हो जाएगा? (इसलिए ./ - put/home/user/username/yourproject/phantomjs का उपयोग करने के बजाय)

+0

और अंत में अपनी परियोजना के लिए एक रास्ता के साथ एक वैश्विक ध्वज की स्थापना, और फिर झंडा सेट करने से पहले आप अपने NPM आदेश चला जैसे निर्यात MY_NODE_JS_PROJECT =/घर/उपयोगकर्ता/उपयोगकर्ता नाम/yourproject और फिर अपने पैकेज में .json में कुछ है "MY_NODE_JS_PROJECT/test/phantomjs ... –

+0

मैं पूर्ण पथ को हार्डकोड नहीं कर सकता, क्योंकि फ़ाइल एक गिट रेपो के लिए प्रतिबद्ध है और अन्य लोगों द्वारा भी उपयोग की जाती है। यह पहली बात है जो आपने समझाया ... :( – pkyeck

0

मुझे शैल स्क्रिप्ट के बजाय जेएस स्क्रिप्ट बनाने का बेहतर विकल्प मिला है। मेरे अनुभव से एनपीएम के साथ सौदा करना आसान लगता है। फिर आप कमांड चलाने से पहले आप किस वातावरण में हैं, इसकी जांच कर सकते हैं। हमारे पास विंडोज़, मैक और उबंटू दोनों के साथ लोग हैं और पर्यावरण की जांच कर रहे हैं या एफएस पैकेज का उपयोग करके जीवन आसान हो जाता है।

+6

यदि आप एक उदाहरण स्क्रिप्ट साझा कर सकते हैं तो यह अच्छा होगा? धन्यवाद। – pkyeck

2

मुझे लगता है कि यह आपके प्रोजेक्ट को व्यवस्थित करने के तरीके पर निर्भर करता है।

मैंने प्रदर्शन करने के लिए एक नमूना प्रोजेक्ट बनाया है। यह मेरा नमूना परियोजना निर्देशिका वृक्ष है:

. 
├── dir1 
│   └── dir2 
├── package.json 
├── src 
│   └── index.js 
└── test 
    └── test.js 

नोट:./dir1/dir2 प्रदर्शन के लिए सिर्फ दो खाली निर्देशिका हैं।

मेरे package.json फ़ाइल इस तरह दिखता है: स्क्रिप्ट खंड पर

{ 
    "name": "sample", 
    "version": "1.0.0", 
    "description": "sample", 
    "main": "index.js", 
    "scripts": { 
    "test": "node test/test.js", 
    "start": "node src/index.js" 
    }, 
    "author": "yaniv", 
    "license": "ISC" 
} 

फोकस, उन दो सरल लाइन कर रहे हैं मेरे स्थान के बारे में विचार के बिना।

अगर मैं /dir1/dir2 के लिए निर्देशिका बदल सकते हैं और npm test निष्पादित और स्क्रिप्ट मैं test संपत्ति पर लिखा था ./ के उपयोग के बिना ठीक से क्रियान्वित किया जाता है (जो वर्तमान निर्देशिका को परिभाषित करता है ...)

निष्कर्ष - मुझे लगता है यदि आप अपनी परियोजना को पुन: व्यवस्थित करते हैं और ./ को हटाते हैं तो आपके मामले में नौकरी होगी।

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