终极目标:掌握和使用node

本博客目的:记录node学习的进度和心得

内容:Nodejs 中的包、npm 、第三方模块、package.json 以及cnpm。

包与npm

​ Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的模块(属于自定义模块)。Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理。

image-20200510151538384

​ 其中某模块引入的包中,其可能也是内部需要引入一些其他的模块。

完全符合CommonJs 规范的包目录一般包含如下这些文件。
• package.json :包描述文件。
• bin :用于存放可执行二进制文件的目录。
• lib :用于存放JavaScript 代码的目录。
• doc :用于存放文档的目录。

​ 在NodeJs 中通过NPM (包管理工具)命令来下载第三方的模块(包)。所有的第三方模块都可以在官网找到。

NPM

npm 是世界上最大的开放源代码的生态系统。我们可以通过npm 下载各种各样的包,这些源代码(包)我们可以在https://www.npmjs.com 找到。

image-20200510151853095

npm 是随同NodeJS 一起安装的包管理工具,能解决NodeJS 代码部署上的很多问题,常见的使用场景有以下几种:

1 允许用户从NPM 服务器下载别人编写的第三方包到本地使用。(如silly-datetime格式化日期包)
2 允许用户从NPM 服务器下载并安装别人编写的命令行程序(工具)到本地使用。(如supervisor工具)
3 允许用户将自己编写的包或命令行程序上传到NPM 服务器供别人使用。

使用包的步骤:

image-20200510155336450

NPM 命令

  1. npm -v 查看npm 版本
  2. 使用npm 命令安装模块,如npm install Module Name(通常记得 –save或 –save-dev)
  3. npm uninstall moudleName 卸载模块(或者在node_modules文件夹里面删掉并且在package.json对应位置删除)
  4. npm list 查看当前目录下已安装的node 包(里面会包含第三方包所依赖的包)
  5. npm info 模块//查看模块的版本
  6. 指定版本安装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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "main.js",
"keywords": [
"test"
],
"author": "wade",
"license": "MIT",
"dependencies": {
"express": "^4.10.1"
},
"devDependencies": {

"jslint": "^0.6.5"
}
}

包含了项目所涉及的名字,版本,描述,入口文件,方法,版本,运行依赖,开发依赖。

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
2
3
4
5
"dependencies": {
"ejs": "^2.3.4",
"express": "~4.13.3",
"formidable": "*1.0.17"
}

^表示第一位版本号不变,后面两位取最新的
~表示前两位不变,最后一个取最新
*表示全部取最新

​ 指定版本安装,直接去掉版本前面的符号,写成md5: “2.2.1”就下载2.2.1的版本。

 此外,通常如果需要制定模块的版本安装,可以创建package-lock.json文件。

image-20200510153939228

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