首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用发行版nodejs包(Ubuntu)将NPM安装到home目录下

使用发行版nodejs包(Ubuntu)将NPM安装到home目录下
EN

Stack Overflow用户
提问于 2012-04-10 07:45:54
回答 11查看 56K关注 0票数 99

我想使用发行版NPM包(或更新版本的chris-lea ppa ),但将NPM安装到我的主目录中。

这可能看起来很挑剔,但对于polyglot/github来说,这是一种非常惯用的方式--让开发人员在Linux下设置语言运行时/库环境:运行时的发行版软件包,每个用户环境中的第三方库(参见virtualenv,如果你愿意,RVM - RVM也会为你构建Ruby )。如果有必要,我将在本地构建node,但这是一个PITA,因为Node正在成为许多项目的附带开发需求。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-10-23 07:51:30

NPM已经将本地包安装到您的项目中,但我仍然希望让系统远离我的操作系统文件。下面是我建议如何划分Nodejs包:

通过chris-lea PPA安装Nodejs和NPM。然后,我在我的hold目录中设置了一个包根来保存Node "global“包:

代码语言:javascript
复制
 $ NPM_PACKAGES="$HOME/.npm-packages"
 $ mkdir -p "$NPM_PACKAGES"

将NPM设置为使用此目录进行其全局软件包安装:

代码语言:javascript
复制
 $ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc

通过将以下内容添加到.zshrc/.bashrc,配置PATH和MANPATH以查看$NPM_PACKAGES前缀中的命令:

代码语言:javascript
复制
# 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会将库安装到~/.npm-packages/lib/node_modules中,并将可执行工具链接到PATH中的~/.npm-packages/bin中。

只需像往常一样使用npm install -g

代码语言:javascript
复制
[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
票数 213
EN

Stack Overflow用户

发布于 2016-09-07 23:18:09

杰克的答案发布于2012年,虽然有用,但它引用了Chris Lea的Node.js PPA,这些PPA自2015年3月以来就没有更新过。

下面是在我的主目录中安装Node.js和npm的步骤:

安装带有nvm的Node.js (不需要sudo ):

代码语言:javascript
复制
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

现在,您可以在没有sudo的情况下使用install -g,所有内容都将进入~/.nvm/

或者安装不带nvm的Node.js (official instructions):

安装Node.js

  • Node.js v6 (截至2017年5月的当前LTS ):

nodejs

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

将npm的默认目录改为本地目录:

代码语言:javascript
复制
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目录中:

代码语言:javascript
复制
$ 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 

现在你可以在不使用sudo的情况下使用install -g,也不需要修改你的系统文件。

票数 35
EN

Stack Overflow用户

发布于 2014-06-26 21:16:51

Just Jake发布的解决方案非常棒。但是,由于npm > 1.4.10的bug,可能无法正常工作。(参见thisthis)

在bug解决后,您可以通过以下步骤降级到npm 1.4.10:

在您的$HOME/.npmrc

  • Run sudo npm install -g npm@1.4.10

  • Ensure中注释(npm --version)

  • Uncomment $HOME/.npmrc

  • Proceed中安装了正确版本的npm的前缀行
  1. ,以便在主文件夹中安装您的全局软件包!。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10081293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档