package.json 的作用
package.json 是 Node.js/npm 项目的
核心配置文件,位于项目根目录,它的作用包括:
dependencies)和开发所需的包(
devDependencies)。scripts 字段,让你可以用
npm run 执行自定义任务(如启动、测试、构建)。一个典型的
package.json 可能如下:
{
"name"
:
"my-project"
,
"version"
:
"1.0.0"
,
"description"
:
"A sample Node.js project"
,
"main"
:
"index.js"
,
"scripts"
:
{
"start"
:
"node index.js"
,
"test"
:
"jest"
,
"build"
:
"webpack"
}
,
"dependencies"
:
{
"express"
:
"^4.18.2"
}
,
"devDependencies"
:
{
"jest"
:
"^29.7.0"
,
"webpack"
:
"^5.89.0"
}
,
"author"
:
"Your Name"
,
"license"
:
"MIT"
,
"keywords"
:
[
"node"
,
"express"
,
"example"
]
}
name:项目名称(必须小写,无空格)。version:项目版本,遵循
SemVer(语义化版本),格式为
x.y.z(主版本。次版本。补丁版本)。description:项目的简短描述。author:作者信息,可以是字符串或对象(如
{"name": "xxx", "email": "xxx"})。license:开源许可证类型(如
MIT、
ISC、
GPL)。keywords:项目关键字数组,方便在 npm 上搜索。
main:指定项目的入口文件(默认是
index.js)。
type:指定模块系统类型:
"commonjs"(默认):使用
require() 导入。"module":使用
import/export 语法。
files:发布到 npm 时需要包含的文件或目录。
repository:项目代码仓库地址。
dependencies:生产环境依赖(项目运行时必需的包),例如:
"dependencies"
:
{
"react"
:
"^18.2.0"
,
"axios"
:
"~1.6.0"
}
版本号前的
^ 表示兼容当前版本的次版本更新。
版本号前的
~ 只允许更新到当前
次版本号下的最新
补丁版本。
| 符号 | 含义 | 示例 | 版本范围 |
|---|---|---|---|
^ |
它能 获得新功能 且避免破坏性变更 |
^1.2.3 |
>=1.2.3 <2.0.0 |
~ |
仅允许 补丁版本 的更新。 |
~1.2.3 |
>=1.2.3 <1.3.0 |
devDependencies:开发环境依赖(仅开发时使用,比如测试、构建工具),例如:
"devDependencies"
:
{
"eslint"
:
"^8.55.0"
}
peerDependencies:声明项目运行时需要的外部依赖版本(常用于插件或库)。
optionalDependencies:可选依赖,即使安装失败也不会影响项目。
scripts:定义可执行的命令,例如:
"scripts"
:
{
"start"
:
"node index.js"
,
"dev"
:
"nodemon index.js"
}
执行方法:
npm run start
npm run dev
package.json 的生成方式手动创建:直接新建
package.json 文件并写入内容。
使用命令:
npm
init
会通过交互方式生成。
使用默认配置:
npm
init -y
直接生成一个默认的
package.json。
package-lock.json 的关系package.json:声明依赖的
版本范围。package-lock.json:锁定安装时的
具体版本,确保每次安装的依赖版本一致。
锁定精确版本:当你执行
npm install 时,npm 会根据
package.json 的版本范围安装最新兼容版本,并将
实际安装的精确版本(如
react@18.2.0、
axios@1.6.2)写入
package-lock.json。
记录依赖树:不仅锁定顶层依赖,还锁定所有子依赖(如 react 依赖的 scheduler、loose-envify 等)的精确版本,避免 “顶层版本相同,但子依赖版本不同” 导致的环境不一致。
加速安装:后续执行
npm install 时,npm 会直接读取
package-lock.json 的精确版本和下载地址,无需重新解析版本范围、计算依赖树,安装速度大幅提升。
保障一致性:团队协作或部署时,所有人安装的依赖版本完全一致,解决 “我本地能跑,线上 / 同事电脑跑不了” 的问题。
✅ 总结:
package.json 是 “声明式依赖”,它定义了项目的基本信息、依赖关系、可执行脚本等。
package-lock.json 是 “锁定式快照”,记录实际安装的精确版本和依赖树,保障环境一致性、加速安装;
掌握它的结构和字段,是使用 npm 和 Node.js 开发的基础。
# 一份不可多得的 《HTML》 面试指南 | 前端面试
# 一份不可多得的 《CSS》 面试指南 | 前端面试
# 一份不可多得的 《JavaScript》 面试指南 | 前端面试
# 一份不可多得的 《Vue》 面试指南 | 前端面试
# 一份不可多得的 《React》 面试指南 | 前端面试
# 《前端学习路线》 | 26 年最新零基础到精通一条龙
# 一份不可多得的 《前端工程化》 面试指南 | 前端面试
# 一份不可多得的 《设计模式》 学习指南 | 面试指南( 1.6W字 )
# 一份不可多得的 《前端性能优化》 面试指南 | 前端面试
# 一份不可多得的 《操作系统》 学习指南(5.6W字)
#《数据结构&算法 》:每一个程序员逃不过的大山 -- 学习路线篇
#《全是干货》计算机各行各业学习路线指南
# 如何在 LeetCode 上科学刷题
<"<image="ty.c5zb.cn"><image="xj.c5zb.cn"><image="dj.c5zb.cn"><image="fj.c5zb.cn"><image="yj.c5zb.cn">">
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048944/viewspace-3114778/ ,如需转载,请注明出处,否则将追究法律责任。