Skip to content

包管理器是针对 node 环境,不涉及到浏览器。包管理器其实是可以在浏览器环境使用的,但是那是构建工具给我们提供的帮助。

一个大项目往往是由很多小功能组成的,这里的每一个小功能叫做功能片段,也就是一个模块,而入口文件称为入口模块或者叫主模块。由一个或多个功能组成的一个完整的模块,就是库,比如 jQuery。库是为了开发中的一些问题提供完整的解决方案,比如 mockjs 就是为模拟数据提供完整解决方案的一个库。而包则是包含元数据的库,也就是包含一些额外的信息,比如库的名称、描述、git 主页、许可证协议、作者、依赖等,也就是说,如果一个库加上他的一些描述信息,我们就成为包。

2019-12-13-10-39-18

可以看到,包的主体就是库,只不过在库的基础上添加了一些描述信息,所以很多时候都不怎么区分和库。

随着 commonjs 的出现,node 环境下的 js 就有了模块化的功能,也就使得 node 环境下的 js 项目可以把功能分的更细,实现更加细粒度的划分。一个类、函数、对象,等等都可以作为模块,这种细粒度的划分也就给我们开发大型项目提供了可能。

当然,既然模块化可以导入自己写的文件,也就可以导入别人写好的库文件,所以就一下子有了很多第三方库,包括加密,模拟数据等等,这些库均由 commonjs 书写,只需要用 require 函数导入即可开箱即用,可以帮助我们解决各种各样的问题。

但是这有很多问题,一个显而易见的问题就是,这些包需要去人家的官网或者是 git 主页下载,然后拷贝到工程目录中,如果遇到重名的库还需要修改名称。除此之外,如果一个库依赖了其他的库,还需要把其他库下下来。除此之外其实还有各种各样的问题,这些问题的根源其实就是一个,就是我们没办法很好的管理这些乱七八糟的包,于是就出现了包管理器帮助我们管理这些包。

前端常用的包管理工具主要有 npm,yarn,我们主要学习 npm。

实际上,前端几乎所有的包管理都是基于 npm 的。

npm 只能在 node 环境中使用,之所以不能在浏览器环境使用,是因为浏览器环境出于安全考虑,无法提供下载、删除、读取本地文件的功能。

node 在安装文件中就内置了 npm,所以当我们安装了 node 后,就会自动安装 npm,无需我们二次安装。

npm 由三个部分组成,入口、官网、CLI,其中入口就是一个保存了第三方包的庞大数据库,包含了非常多的第三方库,这些第三方库是开发者按照 npm 的开发规范,把自己的库打包上传到 npm 的数据库中。官网:npm官网,官网可以用来查询包。CLI 就是命令行接口,CLI 就是一套命令行接口,我们安装好 npm 之后,就可以通过 CLI 这套接口来使用 npm 的各种功能。

我们可以使用 npm -v 命令或者 npm --version 查看当前 npm 版本。

以笔记为镜,可以知得失