介绍
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
-
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。
使用 npm 命令安装模块
npm 安装 Node.js 模块语法格式如下:
$ npm install <Module Name>
全局安装与本地安装
npm 的包安装分为本地安装(local)、全局安装(global)两种:
-
本地安装
1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
2. 可以通过 require() 来引入本地安装的包。
-
全局安装
1. 将安装包放在 /usr/local 下或者node 的安装目录。
2. 可以直接在命令行里使用。
例如: npm 命令本地安装常用的 Node.js web框架模块 express。
npm install express
当前路径下生成了一个目录node_modules和一个文件package-lock.json。
node_modules目录:
express目录:
package.json文件:
Package.json 属性说明:
- .name - 包名。
- .version - 包的版本号。
- .description - 包的描述。
- .homepage - 包的官网 url 。
- .author - 包的作者姓名。
- .contributors - 包的其他贡献者姓名。
- .dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
- .repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- .main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
- .keywords - 关键字
卸载模块
卸载模块命令:
$ npm uninstall express
卸载后,到 /node_modules/ 目录下查看,express包没有了,或者使用以下命令查看:
$ npm ls
更新模块
命令:
$ npm update express
搜索模块
命令:
$ npm search express
创建模块
- 新建项目目录:
E:\project\hookhook
- 在目录里写个js文件thress.js。
function hello(){ console.log("Give you a hook"); } exports.hello=hello;
-
package.json
用 npm 命令来创建package.json 文件,
npm init
如果是要发布模块的话,keywords填npmjs.com上的密码,author填npmjs.com的名字。也可以随便填,要发布的时候再改package.json也是可行的。
详解:
$ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (node_modules) runoob # 模块名 version: (1.0.0) description: Node.js 测试模块(www.runoob.com) # 描述 entry point: (index.js) test command: make test git repository: https://github.com/runoob/runoob.git # Github 地址 keywords: #密码 author: #名字 license: (ISC) About to write to ……/node_modules/package.json: # 生成地址 { "name": "runoob", "version": "1.0.0", "description": "Node.js 测试模块(www.runoob.com)", …… } Is this ok? (yes) yes
现在在路径下生成了一个package.json文件(就是刚才输入的些东西)。
{ "name": "hookhook", "version": "1.0.0", "description": "heyhook", "main": "three.js", "scripts": { "test": "make test" }, "keywords": [ "laughter8888" ], "author": "laughter", "license": "ISC" }
发布模块
加载的模块从哪来的呢——也是别人发布的,所以同样可以通过npm工具发布模块。
-
注册
所有npm都是发布在 https://www.npmjs.com/ 上面的,所以在发布之前,需要到 npmjs 上去注册一个账号,才有权限发布自己定义模块。
-
激活账号
注册之后,会发个邮件到邮箱,要激活一下,不然无法发布。
- 登录
npm adduser
登录成功!
-
发布
登录成功之后就可以发布了。
npm publish
发布成功。
npm表示love you!
使用淘宝 NPM 镜像
npm服务器在国外,用起来是比较慢的,所以可以使用使用淘宝 NPM 镜像。
淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
-
安装CNPM
全局安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
-
检测安装
和npm检测安装类似。
cnpm -v
-
安装模块
和npm差不多,
$ cnpm install [name]
-
发布
cnpm 本质上是复制库,它只负责从源库定期复制国内库,所以不支持通过 cnpm publish 发布到复制库上。
要发布,还是要通过 npm 发布到源库,然后耐心等待复制库同步。
-
官方地址
更多信息可以查阅:http://npm.taobao.org/