我想使用分发Node.js包(或者更新版本的chris-lea ppa),但是将NPM安装到我的主目录.
这可能看起来很挑剔,但对于使用polyglot/github的开发人员来说,在Linux下设置语言运行时/库环境是一种非常惯用的方式:运行时的发行版包,每用户环境中的第三方库(参见virtualenv,RVM - RVM)如果你愿意,也会为你构建Ruby).如果有必要,我将在本地构建节点,但它是一个PITA,因为Node正成为许多项目的偶然开发需求.
第二个链接似乎可能适用于分发nodejs包,但它看起来很粗略.
更新 此粘贴总结了上面的第二个链接,但对我不起作用(似乎npm忽略〜/ .npmrc,至少在安装期间).
Jus*_*ake 191
NPM已经将本地软件包安装到您的项目中,但我仍然希望系统远离我的操作系统文件.以下是我建议划分Nodejs包的方法:
通过chris-lea PPA安装Nodejs和NPM.然后我在homedir中设置了一个包根,以保存Node"global"包:
$ NPM_PACKAGES="$HOME/.npm-packages"
$ mkdir -p "$NPM_PACKAGES"
Run Code Online (Sandbox Code Playgroud)
设置NPM以将此目录用于其全局程序包安装:
$ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc
Run Code Online (Sandbox Code Playgroud)
通过将以下内容添加到.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"
Run Code Online (Sandbox Code Playgroud)
现在,当您执行此操作时npm install -g,NPM将安装库~/.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
Run Code Online (Sandbox Code Playgroud)
Max*_* R. 26
Jake的答案发布于2012年,虽然它很有用但它引用了Chris Lea的Node.js PPA,它们自2015年3月起不再更新.
这是我用来在我的主目录中安装Node.js和npm的步骤:
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
Run Code Online (Sandbox Code Playgroud)
现在你可以install -g没有sudo,一切都进入~/.nvm/
Node.js v6(截至2017年5月的当前LTS):
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
Run Code Online (Sandbox Code Playgroud)Node.js v7:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
或者替换.npm-global您选择的目录.
$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
Run Code Online (Sandbox Code Playgroud)
现在你可以install -g不用sudo和不用弄乱你的系统文件了.
因为python已经做得很好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
Run Code Online (Sandbox Code Playgroud)
自述文件相当不错:https: //github.com/ekalinin/nodeenv
| 归档时间: |
|
| 查看次数: |
41355 次 |
| 最近记录: |