Skip to content

第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 install

npm 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 update

npm 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 的异步编程。

© 2026 编程马·菜鸟教程 版权所有