वितरण njjs पैकेज (Ubuntu) के साथ घर निर्देशिका में NPM स्थापित करें


94

मैं वितरण Node.js संकुल (या हाल ही में रिलीज़ के लिए क्रिस-पीपा-लेप ) का उपयोग करना चाहता हूं, लेकिन एनपीएम को मेरे होम डायरेक्टरी में स्थापित करें।

यह picky लग सकता है, लेकिन यह पॉलीग्लॉट / गिटब-डिवेलप करने वाले डेवलपर्स के लिए लिनक्स के तहत भाषा रनटाइम / लाइब्रेरी वातावरण को सेटअप करने के लिए एक बहुत ही अच्छा तरीका है: रनटाइम के लिए डिस्ट्रो पैकेज, प्रति-उपयोगकर्ता वातावरण में 3-पार्टी लाइब्रेरी (देखें virtualenv, RVM - RVM) यदि आप चाहें तो रूबी का निर्माण भी करेंगे)। यदि आवश्यक हो तो मैं स्थानीय स्तर पर नोड का निर्माण करूंगा, लेकिन यह एक PITA है क्योंकि नोड बहुत सारी परियोजनाओं के लिए एक आकस्मिक विकास की आवश्यकता बन रहा है।


जवाबों:


203

एनपीएम आपकी परियोजनाओं में पहले से ही स्थानीय पैकेज स्थापित करेगा, लेकिन मैं अभी भी अपने ऑपरेटिंग सिस्टम की फाइलों से सिस्टम को दूर रखना पसंद करता हूं। यहां बताया गया है कि मैं कैसे नोड्यूज पैकेज कम्पार्टमेंटलाइज़ करने का सुझाव देता हूं:

Nrisjs और NPM को क्रिस-लेप PPA के माध्यम से स्थापित करें। फिर मैंने नोड "ग्लोबल" पैकेज रखने के लिए अपने होमडिर में एक पैकेज रूट स्थापित किया:

 $ NPM_PACKAGES="$HOME/.npm-packages"
 $ mkdir -p "$NPM_PACKAGES"

इस निर्देशिका का उपयोग करने के लिए एनपीएम को उसके वैश्विक पैकेज संस्थापन के लिए सेट करें:

 $ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc

अपने .zshrc / .bashrc में निम्नलिखित जोड़कर अपने $ NPM_PACKAGES उपसर्ग में कमांड देखने के लिए अपने PATH और MANPATH को कॉन्फ़िगर करें:

# NPM packages in homedir
NPM_PACKAGES="$HOME/.npm-packages"

# Tell our environment about user-installed node tools
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath` command
unset MANPATH  # delete if you already modified MANPATH elsewhere in your configuration
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

# Tell Node about these packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

अब जब आप एक करते हैं npm install -g, तो एनपीएम पुस्तकालयों को स्थापित करेगा ~/.npm-packages/lib/node_modules, और निष्पादन योग्य उपकरणों को लिंक करेगा ~/.npm-packages/bin, जो कि आपके में है PATH

जैसा npm install -gकि आप सामान्य रूप से उपयोग करेंगे:

[justjake@marathon:~] $ npm install -g coffee-script
... (npm downloads stuff) ...
/home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee
/home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake
coffee-script@1.3.3 /home/justjake/.npm-packages/lib/node_modules/coffee-script

[justjake@marathon:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee

2
यदि आप एक साझा सिस्टम पर हैं, जहां nodeस्थापित है, लेकिन npmनहीं है, तो उपरोक्त उत्तर में सेटअप का पालन करें और फिर अपने घर निर्देशिका में खुद को स्थापित npm_config_prefix=$NPM_PACKAGES curl -L https://npmjs.org/install.sh | shकरने के लिए npm
टिम लुईस

1
उपसर्ग का सेट मेरे लिए npm 2.10.1 पर काम नहीं कर रहा है इसलिए मैंने दौड़ना समाप्त कर दियाnpm config set prefix $NPM_PACKAGES
Calin

निम्न स्क्रिप्ट इसे स्वचालित करने का दावा करती है: github.com/glenpike/npm-g_nosudo
माइक आर

मैं $HOME/.localउपसर्ग के बजाय का उपयोग करें । यह स्थानीय फ़ाइलों को संग्रहीत करने के लिए अन्य सॉफ़्टवेयरों द्वारा आजकल उपयोग किया जाने वाला फ़ोल्डर है।
वैभव के

2
यदि आप का उपयोग करें: echo 'prefix = ${NPM_PACKAGES}' >> ~/.npmrc, पथ में hardcoded नहीं है .npmrc, लेकिन NPM वातावरण चर से इसे पढ़ा होगा जब भी NPM रन (ध्यान दें मैं बदल "करने के लिए 'आदेश खोल को रोकने के लिए है कि कार्यान्वित चर के विस्तार से गूंज, और मैं जोड़ा {}आसपास चर चूँकि इसका उपयोग वाक्य रचना में किया जाता है .npmrc। इस कार्य को करने के लिए, मुझे .bashrcपढ़ने के लिए बदलना होगा: इसे बनाता है npm में export NPM_PACKAGES="$HOME/.npm-packages"जोड़ना export। असंबद्ध, मुझे लगता है कि आपको exportअन्य चर के साथ भी जोड़ना होगा ।
मैथ्यूजियम कोइजमैन

31

जेक का जवाब 2012 में पोस्ट किया गया था और उपयोगी होने पर यह क्रिस ले के नोड.जेएस पीपीए का संदर्भ देता है जो अब 2015 के विवाह के बाद से अपडेट नहीं हैं।

यहाँ मैं अपने घर निर्देशिका में Node.js और npm को स्थापित करने के लिए उपयोग किए जाने वाले कदम है:

Nvm (कोई sudoआवश्यक नहीं ) के साथ Node.js स्थापित करें :

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
source ~/.bashrc
nvm install 7
npm install -g npm  # update npm

अब आप कर सकते हैं install -gबिना sudoऔर सब कुछ में चला जाता है~/.nvm/

या nvm ( आधिकारिक निर्देश ) के बिना Node.js स्थापित करें :

Node.js स्थापित करें

  • Node.js v6 (मई 2017 के अनुसार वर्तमान LTS):

    curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  • Node.js v7:

    curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

Npm की डिफ़ॉल्ट निर्देशिका को स्थानीय में बदलें:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH="$HOME/.npm-global/bin:$PATH"  # ← put this line in .bashrc
source ~/.bashrc  # if you only updated .bashrc

वैकल्पिक रूप .npm-globalसे अपनी पसंद की निर्देशिका द्वारा प्रतिस्थापित करें।

Npm को अपडेट करें और जांचें कि यह आपकी $HOMEनिर्देशिका में स्थापित है :

$ npm install npm -g
/home/<username>/.npm-global/bin/npm -> /home/<username>/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/<username>/.npm-global/lib
└─┬ npm@3.10.6 
  ├─┬ glob@7.0.5 
  │ └── minimatch@3.0.2 
  ├── npm-user-validate@0.1.5 
  └── rimraf@2.5.3 

अब आप कर सकते हैं install -gबिना sudoऔर आपके सिस्टम फाइलों के साथ खिलवाड़ के बिना।


दूसरा विकल्प NPM डॉक्स साइट पर भी वर्णित है: docs.npmjs.com/getting-started/…
Vadim

6

जस्ट जेक द्वारा पोस्ट किया गया समाधान बहुत अच्छा है। हालाँकि, npm> 1.4.10 के साथ बग के कारण, यह अपेक्षित रूप से काम नहीं कर सकता है। ( यह और यह देखें )

जब बग हल हो जाता है, तो आप निम्न चरणों का पालन करके npm 1.4.10 पर डाउनग्रेड कर सकते हैं:

  1. अपने $ HOME / .npmrc में उपसर्ग लाइन टिप्पणी करें
  2. Daud sudo npm install -g npm@1.4.10
  3. सुनिश्चित करें कि npm का सही संस्करण स्थापित है ( npm --version)
  4. आपके $ HOME / .npmrc में उपसर्ग लाइन को नंगा करें
  5. अपने होम फ़ोल्डर में अपने वैश्विक पैकेजों को स्थापित करने के लिए आगे बढ़ें!।

4

क्योंकि अजगर पहले से ही एक महान काम करता है virtualenv, मैं उपयोग करता हूं nodeenv। की तुलना में nvm, आप एक ही नोड संस्करण के लिए कई वातावरण बना सकते हैं (जैसे नोड के लिए दो वातावरण 0.10लेकिन पैकेज के विभिन्न सेट के साथ)।

ENVNAME=dev1

#  create an environment
python -m virtualenv ${ENVNAME}

# switch to the newly created env
source ${ENVNAME}/bin/activate

# install nodeenv
pip install nodeenv

# install system's node into virtualenv
nodeenv --node=system --python-virtualenv

रीडमी बहुत अच्छा है: https://github.com/ekalinin/nodeenv


3

मैंने कुछ समय के लिए @ जस्ट -जेक समाधान का उपयोग किया और पाया कि एनवीएम सेटअप करना आसान है। इसके अलावा यह बहुत शक्तिशाली समाधान है जो विभिन्न संस्करणों को स्थापित करने और उपयोग करने की अनुमति देता है nodejs

Ubuntu 14.04 या 16.04 पर:

  1. भवन के लिए आवश्यक पैकेज स्थापित करें nodejs:

    sudo apt-get update
    sudo apt-get install build-essential libssl-dev
    
  2. एनवीएम स्थापित करें :

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
    

    यदि एनवीएम का नया संस्करण उपलब्ध होगा, तो आप एनवीएम साइट पर वास्तविक इंस्टॉलेशन कमांड पा सकते हैं ।

  3. nvmइंस्टॉलर बूटस्ट्रैप स्क्रिप्ट को जोड़ देगा ~/.bashrc, इसलिए आपको इसे चलाने के लिए टर्मिनल को फिर से खोलना होगा, या करना होगा:

    source ~/.bashrc
    
  4. अब आप अपनी nodejsपसंद का कोई भी संस्करण स्थापित कर सकते हैं, उनके बीच स्विच कर सकते हैं आदि।

    nvm ls-remoteउपलब्ध nodejsसंस्करणों को सूचीबद्ध करने के लिए उपयोग करें ।

    स्थापित करने के लिए, उदाहरण के लिए, nodejsv4.2.4 do:

    # install v4.2.4
    nvm install v4.2.4 
    # use nodejs v4.2.4 in the current terminal session
    nvm use v4.2.4
    # use v4.2.4 by default in new terminal session
    nvm alias default v4.2.4
    

2

जस्ट जेक और user1533401 द्वारा दिए गए उत्तर पर विस्तार करने के लिए: मैं डाउनग्रेड करने में असमर्थ हूं क्योंकि मैं साझा होस्टिंग का उपयोग करता हूं और नोड एक सिस्टम निर्देशिका में स्थापित है। यही कारण है कि मैंने निर्देशिका को बदल दिया है जहां npm वैश्विक स्क्रिप्ट स्थापित करता है यदि मैं चाहता हूं कि वह ऐसा करे। एक ही नाव में रहने वालों के लिए, यहाँ एक और अस्थायी सुधार है जो मुझे मिला है:

npm install -g --prefix=$(npm config get prefix) <package>

बग यह है कि npm आपकी प्रति-उपयोगकर्ता कॉन्फ़िग फ़ाइल नहीं पढ़ता है, लेकिन हर बार जब आप एक वैश्विक स्क्रिप्ट फ़िक्सेस स्थापित करते हैं, तो इसे निर्दिष्ट करना। यहां मिला ।



0

अन्य उत्तरों में पुराने समाधान हैं: 2020 का समाधान NPM_CONFIG_PREFIXपर्यावरण चर का उपयोग कर रहा है। ( विवरण देखें )

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

$ NPM_CONFIG_PREFIX="$HOME/.npm-packages" npm install -g ios-sim
/Users/<name>/.npm-packages/bin/ios-sim -> /Users/<name>/.npm-packages/lib/node_modules/ios-sim/bin/ios-sim
+ ios-sim@9.0.0
added 108 packages from 68 contributors in 3.094s
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.