npm 查看当前源
npm config get registry
npm config set registry https://registry.npm.taobao.org
npm config set registry https://registry.npmjs.org
什么是NPM
npm 是 Node.js 官方提供的包管理工具,他已经成了 Node.js 包的标准发布平台,用于 Node.js 包的发布、传播、依赖控制。npm 提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。
为什么要使用 NPM
- 允许用户从 npm 服务器下载别人编写的第三方包到本地使用。
- 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用。
- 将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。
简单来说:npm是node.js提供的包管理工具,可以让开发者下载或上传可以复用的代码。
npm 的包安装分为本地安装(local)、全局安装(global)两种
本地安装
- 1. npm 在默认情况下会从 http://npmjs.org 搜索或下载包,将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
- 2. 可以通过 require() 来引入本地安装的包。
- 3. 本地安装指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。
全局安装
- 1. 将安装包放在 /usr/local 下或者你 node 的安装目录。
- 2. 可以直接在命令行里使用。
如果把包安装到全局,可以提供程序的重复利用程度,避免同样的内容的多分副本,但坏处是难以处理不同的版本依赖。如果把包安装到当前目录,或者说本地,则不会有不同程序依赖不同版本的包的冲突问题,同时还减轻了包作者的 API 兼容性压力,但缺陷则是同一个包可能会被安装许多次。
本地模式和全局模式的特点如下:
模式 | 可通过 require 使用 | 注册 PATH |
---|---|---|
本地模式 | 是 | 否 |
全局模式 | 否 | 是 |
# 本地安装
npm install <package name>
# 全局安装
npm install -global <package name>
npm install -g <package name>
Npm常用命令详解
查看npm版本:npm -v
升级npm:npm install npm -g/npm i npm -g // install可简写为i
使用淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org
查看所有全局安装的模块:npm list -g
npm init:
用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。
npm init
如果使用了 -f(代表force)、-y(代表yes,npm init -y),则跳过提问阶段,直接生成一个新的 package.json 文件。
npm cache clean -f 清除缓存
npm install
npm install/i [package_name]
安装之前,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
如果你希望,一个模块不管是否安装过, npm 都要强制重新安装,可以使用 -f 或 --force 参数。
npm install <packageName> --force
安装不同版本
install 命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上 @ 和版本号。
npm install sax@latest
npm install sax@0.1.1
npm install sax@">=0.1.0 <0.2.0"
install 命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在 packages.json 文件的哪一项中。
–save:模块名将被添加到 dependencies,可以简化为参数-S。
–save-dev:模块名将被添加到 devDependencies,可以简化为参数-D。
npm install sax --save
npm install node-tap --save-dev
# 或者
npm install sax -S
npm install node-tap -D
npm install 默认会安装 package.json 中 dependencies 字段和 devDependencies 字段中的所有模块,如果使用 --production 参数,可以只安装 dependencies 字段的模块。
npm install --production
# 或者
NODE_ENV=production npm install
一旦安装了某个模块,就可以在代码中用 require 命令加载这个模块。
var backbone = require('backbone')
console.log(backbone.VERSION)
npm install 也支持直接输入 Github 代码库地址:
npm install git://github.com/package/path.git
npm install git://github.com/package/path.git#0.1.0
- npm install 模块:安装好后不写入package.json中
- npm install 模块 --save 安装好后写入package.json的dependencies中(生产环境依赖)
- npm install 模块 --save-dev 安装好后写入package.json的devDepencies中(开发环境依赖)
npm set: 用来设置环境变量
npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'
上面命令等于为 npm init 设置了默认值,以后执行 npm init 的时候,package.json 的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行 npm config。
npm info
npm info
命令可以查看每个模块的具体信息。比如,查看 underscore 模块的信息。
npm info underscore
上面命令返回一个 JavaScript 对象,包含了 underscore 模块的详细信息。这个对象的每个成员,都可以直接从 info 命令查询。
npm info underscore description
npm info underscore homepage
npm info underscore version
npm search
npm search
命令用于搜索 npm 仓库,它后面可以跟字符串,也可以跟正则表达式。
$ npm search <搜索词>
npm list
npm list 命令以树形结构列出当前项目安装的所有模块,以及它们依赖的模块。
$ npm list
# 加上 global 参数,会列出全局安装的模块
$ npm list -global
# npm list 命令也可以列出单个模块
$ npm list underscore
npm run
npm 不仅可以用于模块管理,还可以用于执行脚本。package.json 文件有一个 scripts 字段,可以用于指定脚本命令,供 npm 直接调用。
package.json
{
"name": "myproject",
"devDependencies": {
"jshint": "latest",
"browserify": "latest",
"mocha": "latest"
},
"scripts": {
"lint": "jshint **.js",
"test": "mocha test/"
}
}
删除全局模块
- npm uninstall -g <package>
删除本地模块:npm uninstall 模块
删除本地模块时你应该思考的问题:是否将在package.json上的相应依赖信息也消除?
- npm uninstall 模块:删除模块,但不删除模块留在package.json中的对应信息
- npm uninstall 模块 --save 删除模块,同时删除模块留在package.json中dependencies下的对应信息
- npm uninstall 模块 --save-dev 删除模块,同时删除模块留在package.json中devDependencies下的对应信息
node
- 包(package)
- 将多个模块组合为一个完整的功能,就是一个包
- 包结构
bin
- 二进制的可执行文件,一般都是一些工具包中才有
lib
- js文件
doc
- 文档
test
- 测试代码
package.json
- 包的描述文件
- package.json
- 它是一个json格式的文件,在它里面保存了包各种相关的信息
name 包名
version 版本
dependencies 依赖
main 包的主要的文件
bin 可执行文件
- npm(Node Package Manager node的包管理器)
- 通过npm可以对node中的包进行上传、下载、搜索等操作
- npm会在安装完node以后,自动安装
- npm的常用指令
npm -v 查看npm的版本
npm version 查看所有模块的版本
npm init 初始化项目(创建package.json)
npm i/install 包名 安装指定的包
npm i/install 包名 --save 安装指定的包并添加依赖
npm i/install 包名 -g 全局安装(一般都是一些工具)
npm i/install 安装当前项目所依赖的包
npm s/search 包名 搜索包
npm r/remove 包名 删除一个包