我正在尽可能多地使用Homebrew。在MacOS X上安装Node.js、nvm和npm的推荐方式是什么?
当前回答
我同意noa——如果你需要拥有多个版本的node, io.js,那么brew不是合适的解决方案。
你可以在nvm中帮助beta测试io.js支持:https://github.com/creationix/nvm/pull/616
如果你只想要io.js,并且不切换版本,那么你可以从https://iojs.org/dist/v1.0.2/iojs-v1.0.2-darwin-x64.tar.gz安装io.js的二进制发行版;这包括NPM,如果你不切换版本,你将不需要NVM。
记得在安装后更新npm: sudo npm install -g npm@latest
其他回答
Using homebrew install nvm: brew update brew install nvm source $(brew --prefix nvm)/nvm.sh Add the last command to the .profile, .bashrc or .zshrc file to not run it again on every terminal start. So for example to add it to the .profile run: echo "source $(brew --prefix nvm)/nvm.sh" >> ~/.profile If you have trouble with installing nvm using brew you can install it manually (see here) Using nvm install node or iojs (you can install any version you want): nvm install 0.10 # or nvm install iojs-1.2.0 npm is shipping with node (or iojs), so it will be available after installing node (or iojs). You may want to upgrade it to the latest version: $ npm install -g npm@latest UPD Previous version was npm update -g npm. Thanks to @Metallica for pointing to the correct way (look at the comment bellow). Using npm install ionic: npm install -g ionic What about ngCordova: you can install it using npm or bower. I don't know what variant is more fit for you, it depends on the package manager you want to use for the client side. So I'll describe them both: Using npm: Go to your project folder and install ng-cordova in it: npm install --save ng-cordova Using bower: Install bower: npm install -g bower And then go to your project folder and install ngCordova in it: bower install --save ngCordova
PS
某些命令可能需要超级用户权限 npm install some_module的简写是npm i some_module
我使用n(节点版本管理)
您可以通过两种方式安装它
brew install n
or
npm install -g n
您可以在不同版本的node和io之间进行切换。下面是一个来自我当前env的例子,当我不带参数地调用n时:
$ n
io/3.3.1
node/0.12.7
node/4.0.0
node/5.0.0
ο node/5.10.1
我同意noa——如果你需要拥有多个版本的node, io.js,那么brew不是合适的解决方案。
你可以在nvm中帮助beta测试io.js支持:https://github.com/creationix/nvm/pull/616
如果你只想要io.js,并且不切换版本,那么你可以从https://iojs.org/dist/v1.0.2/iojs-v1.0.2-darwin-x64.tar.gz安装io.js的二进制发行版;这包括NPM,如果你不切换版本,你将不需要NVM。
记得在安装后更新npm: sudo npm install -g npm@latest
我是这么做的:
curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
cd / && . ~/.nvm/nvm.sh && nvm install 0.10.35
. ~/.nvm/nvm.sh && nvm alias default 0.10.35
这款没有自制啤酒。
NVM很快将支持io.js,但现在还不支持:https://github.com/creationix/nvm/issues/590
然后用包安装每个项目的其他所有东西。Json和NPM安装。
如果您之前使用brew安装了节点,那么在以“正确的方式”安装节点之前,您将有一堆额外的文件需要清理。另外,我必须在启动脚本中添加一些设置,以使工作顺利进行。
我写了一个脚本来简化这个过程。
# filename: install-nvm-npm-node
# author: Lex Sheehan
# purpose: To cleanly install NVM, NODE and NPM
# dependencies: brew
NOW=$(date +%x\ %H:%M:%S)
CR=$'\n'
REV=$(tput rev)
OFF=$(tput sgr0)
BACKUP_DIR=$HOME/backups/nvm-npm-bower-caches/$NOW
MY_NAME=$(basename $0)
NODE_VER_TO_INSTALL=$1
if [ "$NODE_VER_TO_INSTALL" == "" ]; then
NODE_VER_TO_INSTALL=v0.12.2
fi
if [ "`echo "$NODE_VER_TO_INSTALL" | cut -c1-1`" != "v" ]; then
echo """$CR""Usage: $ $MY_NAME <NODE_VERSION_TO_INSALL>"
echo "Example: $ $MY_NAME v0.12.1"
echo "Example: $ $MY_NAME $CR"
exit 1
fi
echo """$CR""First, run: $ brew update"
echo "Likely, you'll need to do what it suggests."
echo "Likely, you'll need to run: $ brew update$CR"
echo "To install latest node version, run the following command to get the latest version: $ nvm ls-remote"
echo "... and pass the version number you want as the only param to $MY_NAME. $CR"
echo "Are you ready to install the latest version of nvm and npm and node version $NODE_VER_TO_INSTALL ?$CR"
echo "Press CTL+C to exit --or-- Enter to continue..."
read x
echo """$REV""Uninstalling nvm...$CR$OFF"
# Making backups, but in all likelyhood you'll just reinstall them (and won't need these backups)
if [ ! -d "$BACKUP_DIR" ]; then
echo "Creating directory to store $HOME/.nvm .npm and .bower cache backups: $BACKUP_DIR"
mkdir -p $BACKUP_DIR
fi
set -x
mv $HOME/.nvm $BACKUP_DIR 2>/dev/null
mv $HOME/.npm $BACKUP_DIR 2>/dev/null
mv $HOME/.bower $BACKUP_DIR 2>/dev/null
{ set +x; } &>/dev/null
echo "$REV""$CR""Uninstalling node...$CR$OFF"
echo "Enter your password to remove user some node-related /usr/local directories"
set -x
sudo rm -rf /usr/local/lib/node_modules
rm -rf /usr/local/lib/node
rm -rf /usr/local/include/node
rm -rf /usr/local/include/node_modules
rm /usr/local/bin/npm
rm /usr/local/lib/dtrace/node.d
rm -rf $HOME/.node
rm -rf $HOME/.node-gyp
rm /opt/local/bin/node
rm /opt/local/include/node
rm -rf /opt/local/lib/node_modules
rm -rf /usr/local/Cellar/nvm
brew uninstall node 2>/dev/null
{ set +x; } &>/dev/null
echo "$REV""$CR""Installing nvm...$CR$OFF"
echo "++brew install nvm"
brew install nvm
echo '$(brew --prefix nvm)/nvm.sh'
source $(brew --prefix nvm)/nvm.sh
echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc):$CR$OFF"
echo "export NVM_DIR=\"\$(brew --prefix nvm)\"; [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"$CR"
NVM_DIR="$(brew --prefix nvm)"
echo """$CR""Using nvm install node...$CR"
echo "++ nvm install $NODE_VER_TO_INSTALL"
nvm install $NODE_VER_TO_INSTALL
NODE_BINARY_PATH="`find /usr/local/Cellar/nvm -name node -type d|head -n 1`/$NODE_VER_TO_INSTALL/bin"
echo "$REV""$CR""Insert the following line in your startup script (ex: $HOME/.bashrc) and then restart your shell:$CR$OFF"
echo "export PATH=\$PATH:$NODE_BINARY_PATH:$HOME/.node/bin"
echo """$CR""Upgrading npm...$CR"
echo '++ install -g npm@latest'
npm install -g npm@latest
{ set +x; } &>/dev/null
echo "$REV""$CR""Insert following line in your $HOME/.npmrc file:$OFF"
echo """$CR""prefix=$HOME/.node$CR"
echo "Now, all is likley well if you can run the following without errors: npm install -g grunt-cli$CR"
echo "Other recommended global installs: bower, gulp, yo, node-inspector$CR"
我在这里写了一篇短文,详细说明为什么这是“正确的方式”。
如果你需要安装iojs,可以像这样使用nvm:
nvm install iojs-v1.7.1
要安装brew,只需查看其主页。
看alexpods回答其余的问题。
推荐文章
- 如何在交互式Python中查看整个命令历史?
- 错误:无法找到模块“webpack”
- 在OSX中永久设置PATH环境变量
- 如何停止mysqld
- 在node.js中使用async / await文件系统
- NodeJS -用NPM安装错误
- 如何为本地安装npm包设置自定义位置?
- 回调函数来处理管道的完成
- Express函数中的“res”和“req”参数是什么?
- 如何从远程SSH会话发送数据到本地剪贴板
- node.js TypeError:路径必须是绝对路径或指定根路径到res.sendFile[解析JSON失败]
- Passport.js -错误:序列化用户到会话失败
- Node.js vs .Net性能
- SSH端口转发~/。ssh /配置文件?
- 从电子应用程序中删除菜单栏