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配置镜像、设置代理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容