我想使用发行版NPM包(或更新版本的chris-lea ppa ),但将NPM安装到我的主目录中。
这可能看起来很挑剔,但对于polyglot/github来说,这是一种非常惯用的方式--让开发人员在Linux下设置语言运行时/库环境:运行时的发行版软件包,每个用户环境中的第三方库(参见virtualenv,如果你愿意,RVM - RVM也会为你构建Ruby )。如果有必要,我将在本地构建node,但这是一个PITA,因为Node正在成为许多项目的附带开发需求。
发布于 2012-10-23 07:51:30
NPM已经将本地包安装到您的项目中,但我仍然希望让系统远离我的操作系统文件。下面是我建议如何划分Nodejs包:
通过chris-lea PPA安装Nodejs和NPM。然后,我在我的hold目录中设置了一个包根来保存Node "global“包:
$ NPM_PACKAGES="$HOME/.npm-packages"
$ mkdir -p "$NPM_PACKAGES"
将NPM设置为使用此目录进行其全局软件包安装:
$ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc
通过将以下内容添加到.zshrc/.bashrc,配置PATH和MANPATH以查看$NPM_PACKAGES前缀中的命令:
# 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
:
[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
发布于 2016-09-07 23:18:09
杰克的答案发布于2012年,虽然有用,但它引用了Chris Lea的Node.js PPA,这些PPA自2015年3月以来就没有更新过。
下面是在我的主目录中安装Node.js和npm的步骤:
安装带有nvm的Node.js (不需要sudo
):
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
nodejs
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
现在你可以在不使用sudo
的情况下使用install -g
,也不需要修改你的系统文件。
https://stackoverflow.com/questions/10081293
复制相似问题