什么是包管理器

  1. 是跨平台运行环境 node.js 中,用来管理包的一个工具,简称 npm
  2. 安装 node.js 运行环境,将自动安装 npm 包管理

node.js 官网:https://nodejs.org/zh-cn/


什么是包

是依据包规范,使用模块实现的代码集合

即:具有特定文件,和特定结构的,文件夹


包的内容

  1. package.json
    • 描述文件(包的“说明书”,必须要有)
  2. bin
    • 可执行的二进制文件
  3. lib
    • 经过编译的js代码
  4. doc
    • 文档(说明文档,bug修复文档,版本变更记录文档)
  5. test
    • 测试报告
  6. package-lock.json
    • 当安装了一个包,会生成一个 package-lock.json 文件(npm6 及以后才有),里面保存的每个下载过的包的地址,使下次下载速度更快

package.json

"scripts":{...} 配置项

说明 解释
作用 scripts 配置项,是用来给常用命令定义别名的
配置 "scripts":{ peiqi: "webpack" }
用法 npm run peiqi

创建包(也是项目创建的基础)

  1. 文件夹具有 package.json 文件
  2. 执行 npm init -y
  3. 包的要求:
    1. 不能有中文
    2. 不能有大写字母
    3. 不能与npm仓库上其他包同名

npm


初始化

node.js项目初始化,用于创建 package.jsn 配置文件

  • npm init

执行

npm run 运行包的可执行文件

  1. 使用 npm run script 执行脚本,需要先在 package.json 文件中配置相关命令如: "dev":"vite serve"
  2. 使用 npm run script 执行脚本的时候都会创建一个shell,然后在shell中执行指定的脚本。
  3. 这个shell会将当前项目的可执行依赖目录(即node_modules/.bin)添加到环境变量path中,当执行之后之后再恢复原样。 就是说脚本命令中的依赖名会直接找到node_modules/.bin下面的对应脚本,而不需要加上路径

直接执行包的可执行文件

本地安装的包
  1. 使用 npm 安装一个包时,如果该包提供了可执行文件,可执行文件会被安装到当前项目的 node_modules/.bin 目录下
  2. 通过完整路径,直接执行文件 如:
    • ./node_modules/.bin/vite serve
  3. 通过npm 命令 npx 执行文件
    • npx 命令会自动查找当前目录下的 node_modules/.bin 目录下的可执行文件,并运行它。如果没有找到,会下载然后再执行
    • 如:npx vite serve
全局安装的包

通过 npm 全局安装的包,可以直接运行包的相关命令。如:tsc -V


查询

查询类型 命令 查询位置 参数 说明
查询已安装的包 npm list [包名] -g --depth 0 全局安装 中查询包 有:包名 查询指定 包版本
npm ls [包名] -g/-S/-D 当前项目 中查询包 无:包名 列出 指定环境安装的 所有包
查询类型 命令 说明
查询未安装的包 npm view 包名 versions 查看指定包的所有版本
npm view 包名 version 查看指定包最新版本
命令 说明
npm root -g 查看全局安装的包的位置

安装

一般来说,带有指令集的包要进行全局安装

环境 命令 说明
开发/生产 环境 npm install 根据当前目录中 package.json 文件的依赖描述,下载开发/生产环境所有的包
npm i
全局安装 npm install 包名 --global 多个项目都能用到。全局安装的包,其指令到处可用,如果包不带有指令,就无需全局安装
npm i 包名 -g
开发环境 npm install 包名 --save-dev 只在开发环境需要的包,写入 package.json 文件的 devDependecies 开发依赖中
npm i 包名 -D
生产环境 npm install 包名 npm6 之后的版本,不定义后缀,包依旧写入dependecies 生产依赖中
npm install 包名 --save 在开发 和 部署运行中需要的包,写入 package.json 文件的 dependecies 生产依赖中
npm i 包名 -S
命令 说明
npm i 包名@版本号 安装指定版本包

更新

命令 说明
npm update 包名 -后缀 后缀与所在依赖保持一致
npm aduit fix 监测项目依赖中的问题,并尝试修复

卸载

环境 命令 说明
全局环境 npm uninstall 包名 -g 卸载全局包
开发环境 npm uninstall 包名 --save-dev 卸载开发环境的包和声明
npm uninstall 包名 -D
生产环境 npm uninstall 包名 npm6 之后的版本,不定义后缀,直接卸载生产环境的包和声明
npm uninstall 包名 --save 卸载生产环境的包和声明
npm uninstall 包名 -S
开发/生产 环境 npm uninstall 包名 根据包名,卸载开发或生产环境中的包,并删除声明
npm remove 包名 【uninstall 别名】根据包名,卸载开发或生产环境中的包,并删除声明

更换镜像

配置方式 命令 说明
npm 配置 npm config get registry 查看当前镜像
npm config set registry --url-- 修改当前镜像
https://registry.npmmirror.com 淘宝镜像地址
配置方式 命令 说明
nrm 管理工具配置 npm i nrm -g 安装 nrm 镜像地址管理工具
nrm ls 查看镜像地址列表
nrm use 镜像名(taobao) 切换当前镜像
nrm add 自定义镜像名 url 添加镜像
nrm del 自定义镜像名 删除镜像

版本限制

根据 package.json 文件 npm i 安装所有包,安装的包的版本可能不是 package.json 中看到的版本
根据 package.json 下载包,下载的包版本由 package.json 特殊符号进行限定

格式 说明
^3.1.3 锁定大版本,以后安装 包的时候,保证包的版本是 3.x.x 版本,x 默认取最新的
~3.1.3 锁定小版本,以后安装 包的时候,保证包的版本是 3.1.x 版本,x 默认取最新的
3.1.3 锁定完整版本,以后安装 包的时候,保证包的版本必须是 3.1.3 版本

cnpm

cnpm 是淘宝发布的包管理工具,用于从淘宝镜像服务器上下载包

  1. 安装
    • npm install -g cnpm --registry=https://registry.npm.taobao.org
  2. 使用
    • 用法与 npm 相同,只是把 npm 命令换成 cnpm
  3. 问题
    1. cnpm 命令工具操作有一定问题,比如删除指定包可能删除所有包
    2. 建议修改 npm 的镜像地址,使用 npm 命令

yarn

使用的还是npm库里的包

配置方式

  1. 全局安装yarn
    • npm i yarn -g
  2. 获取程序路径
    1. yarn global dir
    2. yarn global bin
  3. 将程序路径配置到 path 环境变量

常用命令


初始化

node.js项目初始化,用于创建 package.jsn 配置文件

  • yarn init -y

安装

一般来说,带有指令集的包要进行全局安装

  • yarn

  • yarn install

    • 安装项目所有声明的依赖
  • yarn add xxxx@3.2.1

    • 下载指定包到 生产依赖
  • yarn add xxxx@3.2.1 -D

    • 下载指定包到 开发依赖
  • yarn global add xxxx@2.3.1

    • 下载指定包到 全局环境

升级

  • yarn upgrade
    • 升级所有依赖。不记录在 package.json 中
  • yarn upgrade xxx
    • 升级指定包
  • yarn upgrade [xxx] --latest
    • 忽略版本规则,升级【全部/指定】包到最新版本,并更新 package.json

删除

  • yarn remove xxx
  • yarn global remove xxxx
  • npm remove xxx -g

查询

  • yarn info xxx
    • 查看包信息
  • yarn global list
    • 查看 全局安装
    • 只能列出带有指令集的包,普通包不会列出
  • yarn list
    • 列出当前项目的依赖

缓存

  • yarn cache list
    • 列出已缓存的每个包
  • yarn cache dir
    • 返回全局缓存位置
  • yarn cache clean
    • 清除缓存

设置淘宝镜像

  • yarn config set registry --url--

CLI参考资料

https://yarn.bootcss.com/docs/cli/