node环境及包管理

关系图

什么是包管理工具

包管理工具其实就是对一些程序包进行安装、升级、卸载的管理工具。程序员在编程的时候常常会用到一些工具,类似于我们在电脑上安装一些软件。这些工具或者一些源码包都是通过命令行来下载安装使用的。所以就需要一个管理工具对这些安装包进行管理。

在系统层面,我们进行开发时需要给系统安装一些环境,或者开发工具之类的,就会需要用到一些依赖包。一般系统都会内置这些包管理工具,比如Red hat有yum,Ubuntu有apt-get,Mac OS有Homebrew

又比如我们进行程序开发时常常会依赖第三方的包,所以也会有包管理工具进行管理。如iOS第三方库管理工具:cocopods,安卓有gradle,java有Maven

node也有自己的包管理工具,最为一个前端新人,刚开始对node相关的各种包管理工具会比较混乱,因为这类工具挺多的,如npm、nrm、nvm、n。还有对应的安装路径,镜像源等。所以这里对这些工具做一个简单梳理和介绍。首先我们要弄清楚npm、nrm、nvm、n、node之间的关系。我是在Mac OS上进行使用的,所以相关的还要加上Homebrew。


什么是Node.js

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。Node.js由Node.js基金会持有和维护,并与Linux基金会有合作关系。Node.js采用Google开发的V8运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。这些技术通常用于数据密集的事实应用程序。

以上解释来自维基百科,简单的说Node.js就是基于V8引擎的JavaScript运行环境。用于开发服务端应用。


安装Node.js环境(HomeBrew)

在Mac上我们安装Node.js环境使用HomeBrew。

brew link node
brew uninstall node
brew install node

安装好了之后我们输入which node能看到软链接的路径为/usr/local/bin/node

然后输入readlink /usr/local/bin/node读取软链接对应的相对路径为../Cellar/node/8.2.1/bin/node。即绝对路径/usr/local/Cellar/node/8.2.1/bin/node。这就是安装的node 8.2.1版本环境所在的路径。

管理Node.js版本(nvm)

因为有时候需要时常对node版本进行切换测试兼容性和一些模块对node版本的限制。所以需要一个工具对node的版本进行管理。一般目前主流的node版本管理工具有两种nvmn

管理 node 版本,选择 nvm 还是 n?这篇文章对nvmn的选择和优劣进行了解释。

我这里使用nvm进行管理Node.js版本。可以nvm git地址里查看使用,或者安装完成后输入nvm直接列出所有的使用命令。

下载nvm

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

配置环境变量

完成后nvm就被安装在了/.nvm下啦,接下来就需要配一下环境变量了,我使用的是`zsh`,所以打开/.zshrc,在最后一行加上:

export NVM_DIR="/Users/dasheng/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

这一步的作用是每次新打开一个bash,nvm都会被自动添加到环境变量中了。
完成后输入source ~/.zshrc重新启动一下配置。

安装对应版本的node

nvm install v8.2.1

当前使用的node软链接路径

which node

我们能看到当前的路径就变成了/Users/dasheng/.nvm/versions/node/v8.2.1/bin/node

查看当前node版本

nvm version
或
node -v

查看安装的所有node版本

nvm ls

比如我这里安装了多个版本v8.2.1v7.10.0v8.2.0。nvm默认会使用你最新安装的那个版本。比如我这里最后安装的是v8.2.0,那使用nvm version查看当前的node版本就是v8.2.0

切换node版本

nvm use v7.10.0

NodeJS包管理和分发工具(npm)

npm介绍

我们上面是安装好了node的基本环境,但是我们平时会使用到一些第三方的node模块,这时就要包管理工具对这些模块进行下载使用了。

NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

新版的node默认就会带有npm,npm和那些第三方的模块都默认安装在node对应版本的/lib/node_modules目录下。比如我使用npm安装es6-promiseksend

npm install es6-promise -g
npm install ksend -g

这里包的安装分为本地安装和全局安装:

npm install es6-promise          # 本地安装
npm install es6-promise -g       # 全局安装

全局安装就是安装在如上图所示的node当前版本对应的node_modules中。

本地安装

本地安装是安装在当前所在文件夹的node_modules,同时当前文件夹需要有一个package.json。比如我在test文件夹中创建package.json文件。内容如下:

{
  "name": "test",
  "version": "0.0.1",
  "private": true
}

然后在test目录下运行npm install es6-promise。这个es6-promise就会被安装在这个test目录下的node_modules。同时package.json内容也会相应自动的改变:

{
  "name": "test",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "es6-promise": "^4.1.1"
  }
}

其实我们可以把test也当成一个node的第三方包,然后他有一个package.json文件,里面描述了这个包的作用、作者、地址、以及这个包所依赖的包等。
所以只要有这个package.json,在dependencies里写上所依赖的包,运行npm install,就会把所有依赖的包安装在test/node_modules目录下了。

相关文章

npm 模块安装机制简介这篇文章是对npm的机制的介绍。

关于npm的使用可以看NPM 使用介绍


NPM源管理器(nrm)

npm默认的源是https://registry.npmjs.org/,国内下载安装一些依赖包的时候会特别慢。所以一般会使用一些国内的镜像源,很多都是使用的淘宝的镜像源https://registry.npm.taobao.org。而为了管理切换这些镜像源就有了nrm

安装

npm install -g nrm

列出所有的源

nrm ls

* npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/

添加新的源

nrm add taobao https://registry.npm.taobao.org/

切换源

nrm use taobao

删除源

nrm del taobao

测试速度

nrm test

参考文章

管理 node 版本,选择 nvm 还是 n?
node版本管理工具nvm-Mac下安装及使用
npm配置镜像、设置代理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容