前端项目中,都有package.json文件,它是项目的配置文件,常见的配置有配置项目启动、打包命令,声明依赖包等,这篇文章是探讨一下其中各项配置的含义
{
"name": "demo",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
这个是我创建的一个全新的项目
一、必须属性
name就是项目的名称,它是一个字符串,应当尽可能的简短、语义化。名称不能和其他模块的名称重复,可以使用npm view命令查询模块明是否重复,如果不重复就会提示404。如果出现重复,在上传npm包时就会失败。version字段表示该项目包的版本号,它是一个字符串。在每次项目改动后,即将发布时,都要同步的去更改项目的版本号格式为:主版本号.次版本号.修订号,通常情况下,修改主版本号是做了大的功能性的改动,修改次版本号是新增了新功能,修改修订号就是修复了一些bug,可以通过以下的命令来查看。
// 查看最新版本
npm view react version
// 查看所有版本
npm view react versions
二、描述信息
description字段用来描述这个项目包,它是一个字符串,可以让人在 npm 的搜索中发现我们的项目包。keywords字段是一个字符串数组,表示这个项目包的关键词。和description一样,都是用来增加项目包的曝光率author表示该项目包的作者,它有两种形式,一种是字符串格式,另外一种是对象
//第一种
"author": "xxxxxx <xxxxxxxxx@qq.com>",
//第二种
"author": {
"name" : "xxxx",
"email" : "xxxxx@qq.com",
"url" : "https://xxxxxxxxx"
}
4.contributors 贡献者,一般写项目的成员,该字段是一个数组
"contributors": [
"xxxx <xxxxx@qq.com> (https://xxxxxxxx)",
"xxxx <xxxxx@qq.com> (https://xxxxxxxx)"
]
5.homepage 项目的主页地址了,它是一个字符串
6.repository 代码的存放仓库地址,通常有两种书写形式。第一种是字符串形式,另一种是对象
//第一种
"repository": "https://xxxx/xxxx.git"
//第二种
"repository": {
"type": "git",
"url": "https://xxxx/xxxx.gi"
}
bugs项目提交问题的地址,该字段是一个对象,可以添加一个提交问题的地址和反馈的邮箱
"bugs": {
"url" : "https://xxxxxx/issues",
"email" : "xxxxx@qq.com"
}
三、依赖配置
1.dependencies 字段中声明的是项目的生产环境中所必须的依赖包。当使用 npm 或 yarn 安装npm包时,该npm包会被自动插入到此配置项中
2.devDependencies声明的是开发阶段需要的依赖包,如Webpack、Eslint、Babel等,用于辅助开发。它们不同于 dependencies,因为它们只需安装在开发设备上,而无需在生产环境中运行代码。当打包上线时并不需要这些包,所以可以把这些依赖添加到 devDependencies 中,这些依赖依然会在本地指定 npm install 时被安装和管理,但是不会被安装到生产环境中
npm install --save-dev xxxxx
yarn add --dev xxxx
3.peerDependencies 字段就是用来供插件指定其所需要的主工具的版本,防止不同用户在使用我们的项目出现依赖包版本不同问题
"peerDependencies": {
"依赖包名称": "版本号"
}
4.optionalDependencies 如果需要在找不到包或者安装包失败时,npm仍然能够继续运行,则可以将该包放在optionalDependencies对象中,optionalDependencies对象中的包会覆盖dependencies中同名的包,所以只需在一个地方进行设置即可
5.bundledDependencies 配置项是一个数组,数组里可以指定一些模块,这些模块将在这个包发布时被一起打包。需要注意,这个字段数组中的值必须是在dependencies, devDependencies两个里面声明过的包才行。
6.engins 当我们维护一些旧项目时,可能对npm包的版本或者Node版本有特殊要求,如果不满足条件就可能无法将项目跑起来。为了让项目开箱即用,可以在engines字段中说明具体的版本号
"engines": {
"node": ">=8.10.3 <12.13.0",
"npm": ">=6.9.0"
}
本篇文章就分享这么多,剩余配置部分会在了解package.json的配置(2)中分享