Appearance
第5章:npm 包管理工具
5.1 npm 核心作用
npm (Node Package Manager) 是 Node.js 自带的包管理工具,主要用于:
- 安装第三方包:从 npm 仓库下载并安装所需的包
- 卸载包:移除不再需要的包
- 更新包:将包更新到最新版本
- 管理依赖:记录项目依赖关系
- 执行脚本:运行 package.json 中定义的脚本
5.2 常用 npm 命令
npm init:初始化项目
npm init 命令用于初始化一个新的 Node.js 项目,生成 package.json 文件。
基本用法:
bash
npm init执行后会提示输入项目信息,如项目名称、版本、描述等。
快速初始化:
bash
npm init -y使用 -y 参数可以跳过交互,使用默认值生成 package.json 文件。
npm install:安装包
npm install 命令用于安装包。
安装指定包:
bash
npm install <package-name>全局安装:
bash
npm install -g <package-name>安装到开发依赖:
bash
npm install --save-dev <package-name>
# 或
npm install -D <package-name>安装指定版本:
bash
npm install <package-name>@<version>安装所有依赖:
bash
npm installnpm uninstall:卸载包
npm uninstall 命令用于卸载包。
卸载指定包:
bash
npm uninstall <package-name>全局卸载:
bash
npm uninstall -g <package-name>npm update:更新包
npm update 命令用于更新包。
更新指定包:
bash
npm update <package-name>更新所有包:
bash
npm updatenpm run:执行脚本
npm run 命令用于执行 package.json 中定义的脚本。
执行脚本:
bash
npm run <script-name>常用脚本:
npm run start:启动应用npm run dev:启动开发服务器npm run build:构建应用npm run test:运行测试
5.3 package.json 文件解析
package.json 文件是 Node.js 项目的配置文件,包含了项目的基本信息和依赖关系。
基本结构:
json
{
"name": "my-project",
"version": "1.0.0",
"description": "A Node.js project",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"node",
"javascript"
],
"author": "Your Name",
"license": "MIT",
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.12"
}
}主要字段说明:
name:项目名称version:项目版本description:项目描述main:主入口文件scripts:脚本命令keywords:关键词author:作者license:许可证dependencies:生产依赖devDependencies:开发依赖
5.4 package-lock.json 作用
package-lock.json 文件用于锁定依赖版本,确保在不同环境中安装相同版本的依赖。
主要作用:
- 锁定版本:记录每个依赖的确切版本
- 加快安装速度:基于锁定文件安装,不需要重新解析依赖树
- 保证一致性:确保所有开发者和部署环境使用相同版本的依赖
注意:不要手动修改 package-lock.json 文件,它会由 npm 自动生成和更新。
5.5 第三方包推荐
常用工具包
- lodash:实用工具库,提供了许多常用的函数
- moment:日期时间处理库
- axios:HTTP 客户端,用于发送请求
- express:Web 框架,用于构建服务器
- mongoose:MongoDB 数据库 ORM
- mysql2:MySQL 数据库客户端
- nodemon:开发时自动重启服务器
- dotenv:环境变量管理
- bcrypt:密码加密
- jsonwebtoken:JWT 认证
开发工具包
- eslint:代码质量检查
- prettier:代码格式化
- jest:测试框架
- webpack:模块打包工具
- babel:JavaScript 编译器
5.6 实操案例:安装第三方包
案例:使用 lodash 工具库
步骤1:初始化项目
bash
npm init -y步骤2:安装 lodash
bash
npm install lodash步骤3:使用 lodash
创建 app.js 文件:
javascript
// app.js
const _ = require('lodash');
// 使用 lodash 函数
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 过滤偶数
const evenNumbers = _.filter(numbers, n => n % 2 === 0);
console.log('偶数:', evenNumbers);
// 求和
const sum = _.sum(numbers);
console.log('总和:', sum);
// 最大值
const max = _.max(numbers);
console.log('最大值:', max);
// 最小值
const min = _.min(numbers);
console.log('最小值:', min);
// 平均值
const average = _.mean(numbers);
console.log('平均值:', average);
// 去重
const duplicateNumbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
const uniqueNumbers = _.uniq(duplicateNumbers);
console.log('去重后:', uniqueNumbers);
// 分组
const users = [
{ name: '张三', age: 20, gender: '男' },
{ name: '李四', age: 25, gender: '女' },
{ name: '王五', age: 30, gender: '男' },
{ name: '赵六', age: 35, gender: '女' }
];
const groupedByGender = _.groupBy(users, 'gender');
console.log('按性别分组:', groupedByGender);步骤4:运行程序
bash
node app.js输出结果:
偶数: [ 2, 4, 6, 8, 10 ]
总和: 55
最大值: 10
最小值: 1
平均值: 5.5
去重后: [ 1, 2, 3, 4 ]
按性别分组: {
'男': [ { name: '张三', age: 20, gender: '男' }, { name: '王五', age: 30, gender: '男' } ],
'女': [ { name: '李四', age: 25, gender: '女' }, { name: '赵六', age: 35, gender: '女' } ]
}案例:使用 nodemon 自动重启服务器
步骤1:安装 nodemon
bash
npm install --save-dev nodemon步骤2:修改 package.json
在 package.json 文件中添加脚本:
json
{
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
}步骤3:创建服务器文件
创建 index.js 文件:
javascript
// index.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, Node.js!\n');
});
const port = 3000;
server.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});步骤4:启动开发服务器
bash
npm run dev现在,当你修改 index.js 文件时,服务器会自动重启,无需手动停止和启动。
小结
- npm 是 Node.js 自带的包管理工具,用于管理第三方包
- 常用命令包括 npm init、npm install、npm uninstall、npm update、npm run
- package.json 文件记录项目信息和依赖关系
- package-lock.json 文件锁定依赖版本,确保一致性
- 第三方包可以大大提高开发效率
- 开发时可以使用 nodemon 等工具提高开发体验
现在,你已经了解了 npm 包管理工具,接下来让我们学习 Node.js 的异步编程。
