node自学之Nodejs中的包、npm 、第三方模块、package.json 以及cnpm
终极目标:掌握和使用node
本博客目的:记录node学习的进度和心得
内容:Nodejs 中的包、npm 、第三方模块、package.json 以及cnpm。
包与npm
Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的模块(属于自定义模块)。Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理。
其中某模块引入的包中,其可能也是内部需要引入一些其他的模块。
完全符合CommonJs 规范的包目录一般包含如下这些文件。
• package.json :包描述文件。
• bin :用于存放可执行二进制文件的目录。
• lib :用于存放JavaScript 代码的目录。
• doc :用于存放文档的目录。
在NodeJs 中通过NPM (包管理工具)命令来下载第三方的模块(包)。所有的第三方模块都可以在官网找到。
NPM
npm 是世界上最大的开放源代码的生态系统。我们可以通过npm 下载各种各样的包,这些源代码(包)我们可以在https://www.npmjs.com 找到。
npm 是随同NodeJS 一起安装的包管理工具,能解决NodeJS 代码部署上的很多问题,常见的使用场景有以下几种:
1 允许用户从NPM 服务器下载别人编写的第三方包到本地使用。(如silly-datetime格式化日期包)
2 允许用户从NPM 服务器下载并安装别人编写的命令行程序(工具)到本地使用。(如supervisor工具)
3 允许用户将自己编写的包或命令行程序上传到NPM 服务器供别人使用。
使用包的步骤:
NPM 命令
- npm -v 查看npm 版本
- 使用npm 命令安装模块,如npm install Module Name(通常记得 –save或 –save-dev)
- npm uninstall moudleName 卸载模块(或者在node_modules文件夹里面删掉并且在package.json对应位置删除)
- npm list 查看当前目录下已安装的node 包(里面会包含第三方包所依赖的包)
- npm info 模块//查看模块的版本
- 指定版本安装npm install 模块@1.8.0(可以去github中的包的release看版本号)
package.json
package.json 定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)
1、创建package.json(当前目录,cmd,输入一下命令。我们在创建项目的时候最好也这样创建一个package.json)
npm init 或者npm init –yes
2、package.json 文件
1 | { |
包含了项目所涉及的名字,版本,描述,入口文件,方法,版本,运行依赖,开发依赖。
3、安装模块并把模块写入package.json(依赖)
我们可以在写项目的时候,需要引入使用一些第三方包,会npm install 第三方包,此时第三方包会下载到node_modules文件夹里,但是如果我们需要贡献这个项目给其他人使用时,上传的是源码文件,也不包含这个node_modules文件夹的(这个文件夹包含很多包,体积也很大),例如我们使用github就是这种情况。
为了让其他人知道我们项目是需要依赖哪些包,我们在写项目时,需要安装的模块会把信息写入package.json里面,之后使用者只需下载项目(包含这个package.json),然后npm init(npm i)根据这个package.json初始化项目,自动下载相关依赖包,后续即可使用。
npm install 模块 –save (运行时依赖,例如一些vue框架,我们在开发完后后肯定还要依赖它们,否则就运行不了。)
npm install 模块 –save-dev (开发时依赖,例如一些JS压缩工具,因为我们在发布后用不到它,而只是在我们开发才用到它。)
然后对应写入package.json。
使用npm install node_module –save 自动更新dependencies 字段值;
使用npm install node_module –save-dev 自动更新devDependencies 字段值;
此外,对于包的版本号说明:
1 | "dependencies": { |
^表示第一位版本号不变,后面两位取最新的
~表示前两位不变,最后一个取最新
*表示全部取最新
指定版本安装,直接去掉版本前面的符号,写成md5: “2.2.1”就下载2.2.1的版本。
此外,通常如果需要制定模块的版本安装,可以创建package-lock.json文件。
cnpm
安装淘宝镜像,会比国外npm官网下载包会快一些。
http://www.npmjs.org npm 包官网
https://npm.taobao.org/ 淘宝npm 镜像官网
淘宝NPM 镜像是一个完整npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为10 分钟一次以保证尽量与官方服务同步。
我们可以使用我们定制的cnpm (gzip 压缩支持) 命令行工具代替默认的npm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
之后用cnpm代替npm