1. npm与包
包: node.js中的第三方模块
1.1 包的基本使用
下载包: npm i [package name]
初次装包完成后,在项目文件夹下多一个叫做node_modules文件夹和package-lock.json配置文件
node_modules文件夹: 用来存放所有已安装到项目的包。require()导入第三方包时,从这个目录查找并加载。package-lock.json配置文件: 用来记录node_modules目录下的每一个包下载信息,如包的名字、版本号、下载地址等。
包的语义化版本规范:包的版本号,总共三位数字,如2.24.0
第一位数字:大版本
第二位数字:功能版本
第三位数字:bug修复版本
前面的版本号增长了,则后面的版本号归零
1.2 包管理配置文件
在项目根目录中,必须提供叫做package.json的包管理配置文件。用来记录与项目有关的一些配置信息,如:
项目名称、版本号、描述等
项目中用到哪些包
哪些包只在开发期间用到
哪些包在开发和部署时都需要用到
使用npm init -y快速新建package.json文件
devDependencies:在项目开发阶段使用,在项目上线后不会用到,下载时使用-d或--save-dev后缀
1.3 npm下包镜像源
下包的服务器地址
// 查看当前下包镜像源
npm config get registry
// 将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
i5ting_toc: 将md转html的npm包
npm i -g i5ting_toc
i5ting_toc -f 要转换的md文件路径 -o
6.4 开发属于自己的包
新建文件夹,作为包的根目录
-
在文件夹中,新建如下三个文件:
package.json:包管理配置文件
index.js: 包入口文件
README.md: 包说明文档
初始化package.json
{
"name":"", // 包名称,不能重复
"version":"", // 版本号
"main":"", // 包入口文件
"description":"", // 包描述信息
"keywords":[""], // 包搜索关键字
"license":"ISC" // 开源许可协议
}
-
发布包
1)注册npm账号
2)登录npm账号:在终端执行
npm login命令,依次输入用户名、密码、邮箱。注:必须在官方下载路径上;查看当前包下载路径
nrm ls,切换到官方下载路径nrm use npm3)在包根目录运行
npm publish命令,即可将包发布到npm上4)删除已发布包:运行
npm unpublish [包名] --force命令,只能删除72小时内发布的包,且删除后在24小时内不允许重复发布 -
模块加载机制
自定义模块:使用
require()加载自定义模块时,必须指定以./或../开头的路径标识符,如果未指定,node会把它当做内置模块或第三方模块进行加载如果使用
require()导入自定义模块时,省略了模块扩展名,则node.js会按顺序尝试加载以下文件:1) 按照确切的文件名进行加载
2)补全.js扩展名进行加载
3)补全.json扩展名进行加载
4)补全.node扩展名加载
5)加载失败
第三方模块:传递给
require()模块标识符的不是一个内置模块,尝试从/node_modules文件夹加载第三方模块,如果没有找到对应第三方模块,则移动到上一层父目录中node_module中进行加载,直到系统的根目录目录作为模块:
1)在被加载目录下查找一个叫做
package.json的文件,并寻找main属性,作为require()加载的入口2)如果目录中没有
pakage.json文件,或main入口不存在无法解析,则Node.js会试图加载目录下的index.js文件3)报错