node学习笔记-3

本节主要是学习npm的一些常用功能。CommonJS包规范是理论,npm是其中的一种实践。对node而言,npm帮助完成了第三方模块的发布,安装,依赖等。借助npm,node与第三方模块之间形成了一个很好的生态系统。

借助npm可以快速的安装和管理依赖包。

1. npm常用的一些命令

1
2
3
add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, docs, 
edit, explore,faq, find, find-dupes, get, help, help-search, home, i, info, init, install, isntall, issues, la,
link, list, ll, ln, login, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, restart, rm, root, run-script, s, se, search, set, show, shrinkwrap, star, stars, start, stop, submodule, tag, test, tst, un, uninstall, unlink, unpublish, unstar, up, update, version, view, whomi

每种命令是什么含义,可以通过npm help 来查看

2. 安装依赖包

npm最常用的方法就是安装依赖包,使用的命令是

1
npm install packageName

执行命令后npm会在当前的目录下创建node_modules目录,然后在node_module目录下创建packageName目录,接着会将包解压到这个目录下。

安装完成后可以直接通过require(‘pakeageName’),即可引入该包。

a. 全局安装

执行以下命令进行全局模式安装。

1
npm install packageName -g

b. 从本地安装

对于一些没有发布在npm上的包,或是因为网络原因导致无法直接安装的包,可以通过将包下载到本地,然后以本地安装。本地安装只需要为npm指明package.json文件所在的位置即可:它可以是一个包含package.json的存档文件,也可以是一个url地址,也可以是一个目录下有package.json文件的目录位置。

1
2
3
npm install <tarball file>
npm install <tarball url>
npm install <folder>

c. 从非官方源安装

如果不能通过官方源安装,可以通过镜像源安装。在执行命令的时候,添加

1
--registry=http://registry.url

3. npm钩子命令

在package.json中scripts字段的提出就是让包在安装或者卸载的过程中提供钩子机制,例如:

1
2
3
4
"preinstall": "preinstall.js",
"install": "install.js",
"uninstall": "uninstall.js",
"test": "test.js"

在以上字段中执行npm install 时候,preinstall指向的脚本将会被加载执行, 然后install指向的脚本会被执行。

4. 发布包

a. 编写模块

1
2
3
4
exports.demo = function (){
return 'my first demo.';
}
//保存为demo.js

b. 初始化包描述文件

使用npm init命令初始化,生成package.json文件,在npm init的时候npm回通过提问式的交互逐个填入选项,最后生成预览的包描述文件。

c. 注册包仓库账号

为了维护包,npm必须要使用仓库账号才允许将包发布到仓库中。注册账号的命令是npm adduser,这个命令也是一个提问式的交互过程,依次填入即可。

d. 上传包

上传包的命令是npm publish
在刚刚创建的package.json文件所在的目录下执行npm publish 开始上传包

e. 安装包

通过npm install <刚才上传的包名> 命令可以安装刚才上传的包

f. 管理包权限

可以使用npm owner命令管理包的所有者,可使用的命令有

1
2
3
npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package nameb>

baishiwen wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!