2013-08-03 10 views
11

मैंएनपीएम: स्रोत कैसे करें ./node_modules/.bin फ़ोल्डर?

मैं एक परियोजना बनाई है कहते हैं कि परियोजना एक

cd ~/projectA 
npm install sails 

लेकिन पाल कमान स्थापना के बाद नहीं मिला है NPM स्थापना पर एक समस्या है।

मुझे पता है कि यह सफलतापूर्वक ~/projectA/node_modules निर्देशिका में स्थापित है। लेकिन निष्पादन योग्य नहीं किया जा सकता है। और मुझे पता है कि यह ~/projectA/node_modules/.bin

जब भी मैं इस प्रोजेक्ट में प्रवेश करता हूं तो मैं स्वचालित रूप से .bin को कैसे स्रोत कर सकता हूं?

क्या मैंने कुछ गलत किया?

+0

आप यकीन है कि यह '~/PROJECTA के तहत स्थापित किया गया है कर रहे हैं/node_modules/.bin' और नहीं '~/projectA/node_modules/sails/bin' इसके बजाए? स्रोत से आपका क्या मतलब है? – verybadalloc

+0

@verybadalloc स्रोत यूनिक्स डॉट http://en.wikipedia.org/wiki/Dot_(Unix) की तरह है और http://superuser.com/a/46146 – SHernandez

+2

संभावित डुप्लिकेट [नोड में स्थानीय रूप से स्थापित पैकेज का उपयोग कैसे करें \ _modules?] (http://stackoverflow.com/questions/9679932/how-to-use-package-installed-locally-in-node-modules) – mightyiam

उत्तर

15

मैं आपको एक असजीला समाधान है, जो मेरे लिए काम कर रहा है दे सकते हैं। मैंने बस अपने .bashrc फ़ाइल में अपना रास्ता निर्यात किया।

export PATH="$PATH:./node_modules/.bin" 

संपादित करें: यह थोड़ी देर हो गया है, लेकिन मैंने इसके बजाय एनपीएम स्क्रिप्ट का उपयोग करने के लिए अपनी रणनीति बदल दी है। उपरोक्त मामले में, सेटअप package.json इस प्रकार है:

"scripts": { 
    "sails": "sails" 
} 

जो तुम तो

npm run sails 

साथ या तर्क

npm run sails -- <args> 
+6

मैं पहले node_modules/.bin डाल दूंगा: 'निर्यात PATH = "./node_modules/.bin:$PATH" ' –

+0

एनपीएम स्क्रिप्ट का उपयोग करने के लिए उपरोक्त, और – logan

2

sails generate foo जैसी कमांड लाइन पर उपयोग करने के लिए आपको वैश्विक स्तर पर एनपीएम मॉड्यूल स्थापित करने की आवश्यकता होगी।

npm install -g sails 

तुम भी पथ बिन करने के आदेश में अगर आप विश्व स्तर पर स्थापित करने के लिए नहीं करना चाहती इस्तेमाल कर सकते हैं:

./node_modules/sails/bin/sails.js generate foo 
2

पाल के लिए सरकारी निर्देश के साथ चल सकते हैं (https://github.com/balderdashy/sails) सलाह

कमांड लाइन उपकरण के साथ नवीनतम स्थिर रिलीज स्थापित:

sudo npm -g install sails 

यह विश्व स्तर पर स्थापित करता है और है कि अपने $PATH में होना चाहिए /usr/local/bin की तरह एक निर्देशिका करने के लिए कहते हैं।

लेकिन binaries के स्थान के बारे में सामान्य सवाल का जवाब देने आप स्थानीय रूप से इंस्टॉल करते हैं, वे ./node_modules/.bin निर्देशिका में रखा जाना चाहिए (ताकि ./node_modules/.bin/sails ... चलाने)

10

आप के लिए एक निरपेक्ष पथ पाने के लिए npm bin आदेश का उपयोग करना चाहिए अपने वर्तमान नोड बिन निर्देशिका।

उदाहरण के लिए:

➤ lessc 
bash: lessc: command not found 
➤ npm bin 
/home/brice/[...]/node_modules/.bin 
➤ export PATH=$(npm bin):$PATH 
➤ lessc --version 
lessc 1.7.3 (Less Compiler) [JavaScript] 

यह संबंधित पथ की समस्या से बचा जाता है, खासकर यदि आप एक निर्माण प्रणाली है कि उप-निर्देशिकाओं के आदेश लागू करेगा में इस का उपयोग किया जा रहे हैं।

1

थोड़ा और अधिक मजबूत है:

export PATH=$(npm bin):$PATH 

आप या तो इसे चला सकते हैं, अपने खोल प्रोफ़ाइल में जोड़ें, या की तरह एक उपनाम बनाएं:

alias snpm='export PATH=$(npm bin):$PATH' 

आप उर्फ ​​मार्ग जाना करते हैं , एकल कोट्स का उपयोग करना सुनिश्चित करें ताकि यह चर के निष्पादन में देरी हो!

+0

का उपयोग करने के संकेत पर संकेत के लिए धन्यवाद! –

0

यदि आप एक एनपीएम स्क्रिप्ट चलाने के लिए अपने पैथ के साथ गड़बड़ करना पसंद नहीं करते हैं जो वैश्विक नहीं है - उदा। आप इसका उपयोग करने वाले अकेले हैं - मैं व्यक्तिगत रूप से sh "उपनाम" के उपयोग की अनुशंसा करता हूं।

  1. NPM स्थापित (स्थानीय) अपने प्रिय पैकेज (json-diff यहाँ, उदाहरण के लिए)

    cd ~ && npm install json-diff 
    
  2. उर्फ ​​यह (अपने ~/.xxxxrc फ़ाइल में बचाने के लिए):

    alias diffj "\`npm bin\`/json-diff !*" 
    
फिर

, diffing के लिए 2 json के:

diffj old.json new.json 
0

मेरी ~/.bashrc में, मैं निम्नलिखित है:

function nbin { 
    local dir; 
    dir=$(npm bin) 
    if [ -d "$dir" ]; then 
    (# subshell to not change this shell's $PATH 
     PATH=$dir:$PATH 
     eval "[email protected]" 
    ) 
    else 
    echo "\"$dir\" is not an npm binary directory." >&1 
    return 1 
    fi 
} 

मैं तो के रूप में .bin निर्देशिका में चला सकते हैं निष्पादन foo:

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