Node.js(三)

Node.js第三天

一、包

1、定义

带有一个 package.json 文件的目录称为包, 用来描述多个模块之间互相依赖的关系, 通常第三方模块都是以一个

包的形式存在, 又称为 “第三方包”

2、包的来源

通常我们直接使用第三方个人或团队开发出来的软件包, 进行免费下载和使用

3、包管理器—npm

世界上有众多的第三方模块或包, Node.js 中使用了一款 npm 包管理器来管理所有的第三方包

  1. 尝试在 npm 网站上搜索你想要的包:https://www.npmjs.com/

  2. 在 npm 上下载包: https://registry.npmjs.org/

4、npm (node package manage)

下载, 更新, 卸载项目中的第三方包, 可以执行 npm -v 查看在自己电脑本机的 npm

二、npm管理命令

1、下载一个指定的包 ★

npm i 包的具体名称

2、查看一个指定包★

npm view 包的具体名称

3、下载指定版本的包★

npm i 包的具体名称@版本号

4、当我们在本地安装一个包后, 会多出两个文件:

node_modulespackage-lock.json

  1. node_modules 文件夹处在项目的根目录下, 用于存放安装的包

  2. package-lock.json 是程序包的锁文件, 里面详细记录了每个包的版本信息和依赖模块, 不需要我们手动编写

  • 注意:
  1. /node_modules/.bin 这个文件夹, 专门用来存放可执行文件

  2. package-lock.json 文件可以确保不同开发人员之间的下载的包版本保持一致, 减少版本错乱的风险

5、包管理配置文件

任何一个 npm 包必须具有 package.json 这样一个 JSON 格式的配置文件, 里面详细记录了包的名称,版本以及所依赖的其他包信息

6、开发环境和部署环境

开发环境:又叫本地环境, 只对开发者本身提供服务, 要求比较随意, 错误调试都可以打开为了更方便的检测程序;

部署环境:又叫线上环境 或 生产环境, 正式对外进行提供服务; 要确保功能完备, 用户体验友好

注意:

通常在我们的项目根目录下也会使用 package.json 这个文件来记录项目的详细信息

7、多人协作开发问题

多人合作一个项目时,第三方的包太多体积过大,node_modules 这个文件夹不易于团队成员之间进行共享,

使用包管理配置文件来记录项目中所依赖的其他第三方包,这样团队成员之间只需要共享这个配置文件就可以了

注意:node_modules 这个文件夹需要添加到 .gitignore 忽略文件中

1
2
#定义git忽略文件
node_modules/

8、快速创建包管理配置文件★

在项目的根目录下执行 npm init -y 命令

注意:

  1. 项目目录不能使用中文命名, 不能包含空格

  2. 创建了 package.json 文件后, 每次安装包的名称和版本都会记录在这个文件中,不需要手动修改

9、dependencies配置项的作用

package.json 配置文件中有两个关键的配置项:

  • dependencies: 在生产环境中所需要的软件包
  • devDependencies: 仅本地开发和测试所需要的软件包

上述配置项的作用:

​ 其他项目成员在执行 npm install 命令时,会自动根据 package.json 文件中记录的包名称和版本信息全部进行下载

10、卸载指定的包 ★

执行 npm uninstall 包名称

注意:

  1. 当命令执行成功后,dependencies 配置项下的包会自动移除

  2. 卸载包的时候不需要指定版本号

11、devDependencies 配置作用 ★

  • 作用:

    只在本地开发测试阶段需要用到的包,一般记录在 devDependencies 配置项中,后期在进行项目打包上线的时候,并不会把这些包携带到线上环境

  • 如何安装开发测试阶段用到的包

    执行命令 npm i --save-dev 包名称@版本号

    npm i -D 包名称@版本号

12、解决包下载速度的问题★

  1. npm 下载包的问题

    当我们下载国外服务器上的包时,网速较慢容易下载失败, 可以考虑把下载包的服务器(源)进行更换

  2. 更换国内的源

    • 在任意目录下执行: npm config set registry=https://registry.npm.taobao.org

    • 检查源有没有更换成功: npm config get registry

  3. 补充:借助 cnpm 包,提供了下载命令 cnpm i 包名称

    安装:npm i cnpm -g

    注意:如果npm下载包可以正常下载时,尽量少用cnpm下载包命令

13、包的分类

  1. npm 的包从作用域上可以分为:

    • 项目包: 被安装到项目的 node_modules 目录中的包,只能在当前项目下进行使用

      - [核心依赖包] 线上环境用到的依赖包: npm i 包名称

      - [开发依赖包] 开发测试环境用到的依赖包:npm i -D 包名称

    • 全局包: 被下载到 node 安装位置 node_modules 目录下的包,可以在全局范围(任意目录)内使用

      安装命令: npm i -g 包名称

      卸载命令: npm uninstall -g 包名称

  2. 注意: 具有全局工具性的包才有全局安装的必要性, 可以参考 npm 官网中对包的说明

14、全局包的使用★

使用一个把 markdown 格式的文档转成 html 格式文件的工具包

  1. 安装全局包: npm i -g i5ting_toc

  2. 使用全局命令: i5ting_toc -f 要转换的md文件 index.html

可以在此文件夹中查看已经转换的html文件

15、包的规范结构

一个包规范的组成结构:

  1. 必须以单独的目录存在

  2. 包的根目录下必须包含 package.json 配置文件

  3. package.json 这个配置文件必须包含 name, version, main 三个属性, 分别代表包的名称,版本和包的入口

注意:

main 配置包的主入口文件,我们在使用 require(‘foo’) 引入一个包时,返回的是 foo 这个包主入口文件导出的对象

三、开发一个自己的包

1、开发自己的包

  • 创建一个文件夹保存自己的开发的包
  • 要包含文件:
    • package.json:存放包的相关信息
    • index.js:包的入口文件
    • README.md:使用文档

2、发布包的步骤★

  1. 编写包的说明文档

    在包的根目录下添加文件 README.md 文件

  2. 注册一个 npm 账号

    打开注册网址: https://www.npmjs.com/signup

  3. pc端打开注册邮箱进行确认

    点击蓝色按钮 Verify Email

  4. 在包的发布目录下面执行命令

    npm publish

  5. 删除已经发布的包

    npm unpublish 包名称 --force


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!