登录
注册
node.js 学习社区
npm快速入门提高

郗小敬

2015-02-28 23:45

一、什么是npm?

Node包管理器(npm)是一个由Node.js官方提供的第三方包管理工具,就像PHP、Pear、Python的PyPI一样。npm是一个完全由JavaScript 实现的命令行工具,通过Node.js执行,因此严格来讲它不属于Node.js的一部分。在最初的版本中,我们需要在安装完Node.js以后手动安装npm。但从Node.js 0.6开始,npm已包含在发行包中了,安装Node.js时会自动安装npm

二、安装Node.js和更新npm

1. 安装Node.js

nodejs.org下载并安装.

安装完成后,打开cmd(Windows),或者终端(Linux)运行命令:

node -v

查看Node.js版本。

2. 更新npm

安装好Node.js后,会有一个自带的npm可以使用。但是,npm更新的频率比Node.js要高,所以我们运行命令更新npm至最新版本。

Linux:

sudo npm install npm -g

Windows:

npm install npm -g

安装完毕后,运行命令:

npm -v

查看npm版本。

三、npm目录权限问题

全局安装一个package时,可能会出现没有权限的错误提示,这表示你对这个npm存储全局package和命令行工具的目录(npm安装目录)没有权限。
两种解决方案:

  1. 获取npm安装目录的权限。
  2. 指定npm的默认安装目录为其他有权限操作的目录。

方案一、获取npm安装目录的权限

1.使用如下命令查看npm的安装目录:

npm config get prefix

例如:执行命令后,win8.1系统的npm安装目录为:C:\Users\novaline\AppData\Roaming\npm
对于Linux系统,可能是/usr/local

2.获得npm安装目录权限(Linux):

sudo chown -R '你的系统用户名' <directory>

如果你不想改变这个目录的权限,可以只获取npm目录下子目录的权限,如lib/node_modules,bin,share目录。

方案二、指定npm的默认安装目录为其他有权限操作的目录

有时候你并不想改变npm默认安装目录的权限,可以指定npm使用其他的目录。

1.创建一个用于安装全局package的目录

mkdir ~/npm-global

2.配置npm使用这个新目录

npm config set prefix '~/npm-global'

3.打开或创建~/.profile文件添加环境变量:

export PATH=~/npm-global/bin;$path

4.关闭~/.profile文件,回到终端或者命令行(cmd),运行:

source ~/.profile

测试:不使用sudo,下载一个全局package

npm install -g jshint

四、安装npm包(package)

安装npm包有两种方式:本地全局。使用本地还是全局安装package取决于你想怎么使用这个package

如果只是你自己的模块依赖这个package,使用本地安装,本地安装前,先在命令行工具(cmd)或者终端里切换到准备安装的目录下

如果是作为一个命令行工具来使用,比如grunt CLIgrunt命令行工具),使用全局安装。全局安装,不需要在命令行工具(cmd)或者终端里切换到某个目录下,任意目录下的全局安装,最后都会安装在npm的安装目录的node_modules目录下。

开始安装package

在命令行工具(cmd)或者终端输入npm install <package name>命令,就可以下载并安装一个package,如:

npm install lodash

说明:执行该命令,将会创建一个node_modules目录(如果该目录不存在的话),并下载安装的package到该目录。安装完成后,你会在node_modules目录下发现该package

使用安装的package

现在这个package已经在node_modules目录下,你可以在你的代码里使用它了。例如:如果你创建了一个Node模块,你可以require它。

创建一个index.js文件,包含如下代码:

var lodash = require('lodash');
var output = lodash.without([1, 2, 3], 1);
console.log(output);

测试:使用node index.js运行,输出结果为:[2, 3]

使用--save标识

管理本地npm package的另一种方法是创建一个package.json文件。如果在你的项目目录下有一个package.json文件,当你运行npm install命令时,npm将查看package.json文件中的dependencies字段对应的package列表,这种方法可以使你不必每次都一个一个安装,并且你也可以和把这个package.json文件分享给其他开发者。

在你的项目目录下创建一个package.json文件

{
    "name": "demo-app"
    "version": "1.0.0"
}

使用--save标识下载安装package

npm install lodash --save

说明:上述命令在下载安装package的同时,还会在package.json文件的dependencies字段添加该package的名称和版本号。结果如下:

{
  "name": "demo-app",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "^3.2.0"
  }
}

手动添加dependencies字段对应的package

例如:

"dependencies": {
    "lodash": "^2.4.1",
    "tap": "*"
}

说明:tap包是手动添加的,再次运行npm install命令,你会发现在node_modules目录下多了tab包的目录。

一、更新本地包(package)

首先,在命令行工具(cmd)或者终端切换到项目目录下,package.json文件最好就放在项目目录下。运行命令:

npm update

更新所有node_modules目录下的package包。

二、卸载包(package)

你可以从node_modules目录下卸载并删除一个package包,使用npm uninstall <package name>命令,例如:

npm uninstall lodash

如果卸载的同时想把这个package包的信息从package.json文件的dependencies字段中也一并删除,要加上--save标识,例如:

npm uninstall --save lodash

三、全局安装package

npm install -g jshint

如果出现权限错误,请参考==npm快速入门(一)==。

四、更新全局package

要更新某一个全局package包,可以使用npm install -g <package name>,例如:

npm install -g jshint

如果想知道哪个package包有更新,可以使用:

npm outdated -g--depth=0

运行命令后,例如:

Package  Current  Wanted  Latest  Location
lodash     3.1.0   3.1.0   3.2.0  lodash

lodash包的最新版是3.2.0,当前版本是3.1.0

如果想更新全局所有的package包,使用

npm update -g

但是官方不推荐使用,有一个问题需要修复。

五、卸载全局package

命令:

npm uninstall -g jshint

六、创建一个Node.js模块

Node.js模块也是一种可以被发布到npm上的package包。
使用npm init命令可以快速创建一个package.json文件,命令会提示你输入一些组成package.json文件的字段和值,nameversion字段是必须的

回复 · 0

发表回复

你可以在回复中 @ 其他人