跳至主要內容

03.包管理器

pinia原创大约 7 分钟

简版

  • 包是模块的集合,用于解决某一方面的问题
  • 一个第三方库可以看做是一个包
  • 每个包里包含一个或多个模块

包管理

  • 每一个包可能有自己的
    • github 地址
    • 官网
    • 版本
    • 依赖
  • 如何快速下载包?

npm 的缺点

  1. npm install 下载速度慢,即使是重新 install 时速度依旧慢

  2. 同一个项目,安装的无法保持一致性。原因是因为 package.json 文件中版本号的特点导致在安装的时候代表不同的含义。

  3. 使用 npm 安装多个 js 包时,包会在同一时间下载和安装。安装过程中,其中一个包抛出了一个异常,但 npm 会继续安装其他包,所以错误信息就会在一大堆提示信息中丢失掉,以至于直到执行前,都不会发现实际发生的错误。

yarn 的优点

  1. 安装速度快 (服务器速度快 , 并且是并行下载)
  2. 版本锁定,安装版本统一
  3. 缓存机制,如果之前已经安装过一个软件包,用 Yarn 再次安装时之间从缓存中获取,就不用像 npm 那样再从网络下载了
  4. 输出简洁并且多注册来源处理。安装包时,直观地打印出必要的信息;不管包被不同的库间接关联引用多少次,只会从一个注册来源去装,防止出现混乱不一致。

cnpm

pnpm

1.pnpm 是 Node.js 的替代包管理器。它是 npm 的直接替代品,但速度更快、效率更高。 2.pnpm 拥有 Yarn 超过 npm 的所有附加功能

熟记

命令简写说明
将模块安装到本地 node_modules 目录下,但不保存在 package.json 中
--save-S将模块安装到本地 node_modules 目录下,同时保存到 package.json 中的 devDependencies 配置项中,在生产环境下这个包的依赖依然存在
--save--dev-D将模块安装到本地 node_modules 目录下,同时保存到 package.json 中的 devDependencies 配置项中,仅供开发时使用
--global-g安装的模块为全局模块,如果命令行模块,会直接连接到环境变量中

npm

npm 全称为 Node Package Manager,是一个基于 Node.js 的包管理器,也是 Node.js 社区最流行、支持的第三方模块最多的包管理器。它的初衷就是让开发人员更容易分享和重用代码。npm 提供了命令行工具,其主要功能是管理 Node.js 包,包括安装、更新、删除、查看、搜索、发布等。

npm 最初只是 Node.js 的包管理器,但随着前端技术的不断发展,它的定位变成了广义的包管理器,可以实现 JavaScript、React、Vue、Gulp、移动开发等包管理,是目前最大、生态最为健全的包管理器。

命令作用
npm -v查看 npm 版本。
npm init初始化后会出现一个 package.json 配置文件。可以在后面加上 -y ,快速跳过问答式界面。
npm install根据项目中的 package.json 文件自动下载项目所需的全部依赖。
npm install 包名 --save-dev(npm install 包名 -D)安装的包只用于开发环境,不用于生产环境,会出现在 package.json 文件中的 devDependencies 属性中。
npm install 包名 --save(npm install 包名 -S)安装的包需要发布到生产环境的,会出现在 package.json 文件中的 dependencies 属性中。
npm list查看当前目录下已安装的 node 包。
npm list -g查看全局已经安装过的 node 包。
npm --help查看 npm 帮助命令。
npm update 包名更新指定包。
npm uninstall 包名卸载指定包。
npm config list查看配置信息。
npm info 指定包名查看远程 npm 上指定包的所有版本信息。
npm config set registry registry.npm.taobao.org修改包下载源,这里修改为了淘宝镜像。
npm root查看当前包的安装路径。
npm root -g查看全局的包的安装路径。
npm ls 包名查看本地安装的指定包及版本信息,没有显示 empty。
npm ls 包名 -g查看全局安装的指定包及版本信息,没有显示 empty。

yarn

命令作用
yarn -v查看包管理器 yarn 的版本信息[-new-version]:直接记录版本号;[--no-git-tag-version]:不生成 git 标签
yarn init [--yes/-y:默认生成 package.json 文件]互动式创建/更新 packeage.json 文件
yarn config配置 设置:set 键值对,删除:delete,列表:list
yarn config get registry查看包管理器 yarn 的网络仓库网址。
yarn config set registry http://registry.npm.taobao.org/[-g--global]
yarn info [--json:json 格式显示结果]显示依赖包的信息
yarn global add xxx [--prefix:包路径前缀]通过 yarn 全局安装 xxx 包。这个包被安装在了 yarn 的本地全局仓库。
yarn global remove xxx通过 yarn 卸载全局安装的 xxx 包。在 yarn 的本地全局仓库的 xxx 包会被移除。
yarn add xxx [--dev/-D]通过 yarn 局部安装 xxx 包。
yarn remove xxx通过 yarn 局部卸载 xxx 包,更新 package.json 和 yarn.lock
yarn install安装所有包[--flat]:只安装一个版本[--force]:强制重新下载更新[--har]输出安装时网络性能日志[-no-lockfile]:不生成 yarn.lock 文件[--production]:生产环境安装(不安装 devDependencies 中的依赖)
yarn list列出已安装依赖包[--depath=0]:列表深度,从 0 开始
yarn run运行 package.json 中的预定义的脚本
yarn upgrade升级依赖包
yarn bin显示 yarn 安装目录
yarn cache显示 yarn 缓存 列出缓存包:ls ,打出缓存目录路径:dir,清除缓存 clean
yarn check检查包
yarn clean清理不需要的依赖文件
yarn generate-lock-entry生成锁定文件
yarn licenses列出已安装依赖包的证书,ls:证书列表,generate-disclaimer:生成免责声明
yarn link开发时链接依赖包,以便在其他项目中使用
yarn unlink取消链接依赖包
yarn login保存你的用户名,邮箱
yarn logout删除你的用户名,邮箱
yarn outdated检查过时的依赖包
yarn owner管理拥有者
yarn pack给包的依赖打包
yarn publish将包发布到 npm。[--tag]:版本标签,[--access:public/restricted]:公开还是限制
yarn tag显示包的标签
yarn team管理团队
yarn test(yarrn run test)测试
yarn self-updateyarn 自身更新--未实现
yarn why分析为什么需要安装依赖包(包名/包目录/包目录中的文件名)

cnpm

npmmirror 中国镜像站open in new window这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10 分钟 一次以保证尽量与官方服务同步。

命令作用
cnpm -v查看是否安装 cnpm
npm install -g cnpm -registry=https://registry.npm.taobao.org安装 cnpm
cnpm config set registry https://registry.npm.taobao.org设置 cnpm 镜像地址为淘宝地址
npm config get registry查看设置镜像地址
cnpm install安装

pnpm

pnpm 官网open in new window是 Node.js 的替代包管理器。它是 npm 的直接替代品,但速度更快、效率更高。

  1. 全局安装
npm install pnpm -g
  1. 设置源
// 查看源
pnpm config get registry
// 切换淘宝源
pnpm config set registry https://registry.npmmirror.com/
  1. 使用
pnpm install 包名称
pnpm i 包名称
pnpm add 包名称    // -S  默认写入dependencies
pnpm add -D    // -D devDependencies
pnpm add -g    // 全局安装
  1. 移除
pnpm remove 包名称  // 移除包
pnpm remove 包名称 --global  // 移除全局包
  1. 更新
pnpm up  // 更新所有依赖项
pnpm upgrade 包  // 更新包
pnpm upgrade 包 --global  // 更新全局包
  1. 设置存储路径
pnpm config set store-dir /path/to/.pnpm-store
  1. 个人使用
    1. 一些需要 node-gyp 的包一定要记得安装好
    2. 在系统上禁止使用脚本解决方法
# 以管理员身份运行power shell
set-executionpolicy remotesigned

npm 和 yarn 使用选择?

大家可以根据不同的场景进行选择

  1. 个人项目

    如果是个人项目,哪个工具都可以,可以根据自己的喜好来选择

  2. 公司项目 如果是公司要根据项目代码来选择,可以 通过锁文件判断 项目的包管理工具

    • npm 的锁文件为 package-lock.json
    • yarn 的锁文件为 yarn.lock

注意

包管理工具 不要混着用,切记,切记,切记

上次编辑于:
贡献者: 林深不见鹿