概念
一、什么是包?
包 package 是一个或多个js模块的集合,它们共同完成某一类功能。
可以简单的认为每一个工程就是一个包。
有些包是为了给别人用的,这种包也叫第三方库。
二、什么是包管理器?
包管理器是一个管理包的工具,前端常见的包管理器有 npm 、 yarn 、 cnpm 、 pnpm 等。 npm 工具目前只能在node环境下使用。
包管理器具备以下能力:
- 让开发者可以轻松的下载包
- 让开发者可以轻松的升级和卸载包
- 能够自动管理包的依赖
查看 npm 版本命令:
npm -v // 8.5.0
(1)配置源
npm官网:
https://www.npmjs.com/
① 查看源
npm config get registry
② 配置淘宝镜像源
npm config set registry https://registry.npm.taobao.org
③ 配置官方源
npm config set registry https://registry.npmjs.org/
(2)初始化
初始化会生成一个 package.json 文件
npm init // 初始化工程,帮助生成package.json文件 npm init -y // 初始化工程,全部使用默认配置生成package.json文件
(3)默认生成的 package.json
scripts 为项目运行的脚本,下面代码中通过 npm run test 来运行脚本 test 后面 "echo "Error: no test specified" && exit 1" 的内容。
可以根据需求配置不同的脚本来运行不同的内容。比如:运行、打包等。
注:当脚本名字为 start 时,运行命令可以省略 run ,为 npm start 。
{ "name": "demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
(4) 安装
查看包所有版本:
npm view 包名 versions // view 可替换为v // 例: npm v moment versions // 运行结果 [ '1.0.0', '1.0.1', '1.1.0', '1.1.1', '1.2.0', '1.3.0', '1.4.0', '1.5.0', '1.5.1', '1.6.0', '1.6.1', '1.6.2', '1.7.0', '1.7.1', '1.7.2', '2.0.0', '2.1.0', '2.2.1', '2.3.0', '2.3.1', '2.4.0', '2.5.0', '2.5.1', '2.6.0', '2.7.0', '2.8.1', '2.8.2', '2.8.3', '2.8.4', '2.9.0', '2.10.2', '2.10.3', '2.10.5', '2.10.6', '2.11.0', '2.11.1', '2.11.2', '2.12.0', '2.13.0', '2.14.0', '2.14.1', '2.15.0', '2.15.1', '2.15.2', '2.16.0', '2.17.0', '2.17.1', '2.18.0', '2.18.1', '2.19.0', '2.19.1', '2.19.2', '2.19.3', '2.19.4', '2.20.0', '2.20.1', '2.21.0', '2.22.0', '2.22.1', '2.22.2', '2.23.0', '2.24.0', '2.25.0', '2.25.1', '2.25.2', '2.25.3', '2.26.0', '2.27.0', '2.28.0', '2.29.0', '2.29.1', '2.29.2', '2.29.3', '2.29.4', '2.30.0', '2.30.1' ]
安装分为 本地安装 和 全局安装 。
① 本地安装 有两种:
- 安装普通依赖(最常见):程序运行起来需要用到的依赖为普通依赖。
- 安装开发依赖:不是运行的时候要用,开发时需要用到的,代码一旦写完就用不到了的依赖。例:npm i -D @types/node,为node环境下开发时智能提示依赖包。
安装会将包下载到当前命令行所在目录的 node_modules 中。
绝大部分安装都使用 本地安装 。
npm install 包名 // install 可替换为 i npm install --save 包名 npm install 包名@版本号
若仅作为开发依赖,则添加参数 -D
npm i -D 包名 npm i -D 包名@版本号
本地安装包的 package.json
{ "name": "demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { // 为本地安装的普通依赖包 "lodash": "^4.17.21", "mockjs": "^1.1.0" }, "devDependencies": { // 为本地安装的开发依赖包 "@types/node": "^20.11.5" } }
② 全局安装
会将包下载到一个全局的位置。
只有需要使用某个全局命令时,才需要进行全局安装。
npm i -g 包名 npm i -g 包名@版本号
(5)卸载
① 本地卸载
npm uninstall 包名 // uninstall 可替换为 un // 例:卸载lodash npm un lodash
② 全局卸载
npm uninstall -g 包名 // 例:全局卸载moment npm un -g moment
(6)引入包: lodash
node查找包的顺序:
- 查找是否有内置模块 lodash ;
- 查找当前目录的 node_modules 中是否有 lodash ;
- 依次查找上级目录的 node_modules 中是否有 lodash ,直到根目录。
require("包名") // 例:引入lodash包 const _ = require("lodash") console.log(_.chunk([2,3,4,5],2)) // [ [ 2, 3 ], [ 4, 5 ] ]
三、什么是 cli
cli 是一个命令行工具,它提供一个终端命令,通过该命令可以完成一些功能。