package.json

 

1. dependencies

dependencies字段中声明的是项目的生产环境中所必须的依赖包。当使用 npm 或 yarn 安装npm包时,该npm包会被自动插入到此配置项中:

npm install <PACKAGENAME>
yarn add <PACKAGENAME>

当在安装依赖时使用--save参数,也会将新安装的npm包写入dependencies属性。

npm install --save <PACKAGENAME>

该字段的值是一个对象,该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。

"dependencies": {
   "react": "^17.0.2",
   "react-dom": "^17.0.2",
   "react-scripts": "4.0.3",
},

这里每一项配置都是一个键值对(key-value), key表示模块名称,value表示模块的版本号。版本号遵循主版本号.次版本号.修订号的格式规定:

  • 固定版本: 上面的react-scripts的版本4.0.3就是固定版本,安装时只安装这个指定的版本;
  • 波浪号: 比如~4.0.3,表示安装4.0.x的最新版本(不低于4.0.3),也就是说安装时不会改变主版本号和次版本号;
  • 插入号: 比如上面 react 的版本^17.0.2,表示安装17.x.x的最新版本(不低于17.0.2),也就是说安装时不会改变主版本号。如果主版本号为0,那么插入号和波浪号的行为是一致的;
  • latest:安装最新的版本。

需要注意,不要把测试或者过渡性的依赖放在dependencies,避免生产环境出现意外的问题。

2. devDependencies

devDependencies中声明的是开发阶段需要的依赖包,如Webpack、Eslint、Babel等,用于辅助开发。它们不同于 dependencies,因为它们只需安装在开发设备上,而无需在生产环境中运行代码。当打包上线时并不需要这些包,所以可以把这些依赖添加到 devDependencies 中,这些依赖依然会在本地指定 npm install 时被安装和管理,但是不会被安装到生产环境中。

当使用 npm 或 yarn 安装软件包时,指定以下参数后,新安装的npm包会被自动插入到此列表中:

npm install --save-dev <PACKAGENAME>
yarn add --dev <PACKAGENAME>
"devDependencies": {
  "autoprefixer": "^7.1.2",
  "babel-core": "^6.22.1"
}

3. engines

当我们维护一些旧项目时,可能对npm包的版本或者Node版本有特殊要求,如果不满足条件就可能无法将项目跑起来。为了让项目开箱即用,可以在engines字段中说明具体的版本号:

"engines": {
	"node": ">=8.10.3 <12.13.0",
  "npm": ">=6.9.0"
}

需要注意,engines只是起一个说明的作用,即使用户安装的版本不符合要求,也不影响依赖包的安装。

 

4. scripts

scripts 是 package.json中内置的脚本入口,是key-value键值对配置,key为可运行的命令,可以通过 npm run 来执行命令。除了运行基本的scripts命令,还可以结合pre和post完成前置和后续操作。先来看一组scripts:

"scripts": {
	"dev": "node index.js",
  "predev": "node beforeIndex.js",
  "postdev": "node afterIndex.js"
}
### package.json 文件格式及用途 #### 1. 文件格式 `package.json` 是一个 JSON 格式的文件,用于描述 Node.js 或前端项目的元信息和依赖关系。它通常位于项目根目录下,包含了多个字段来定义项目的属性和行为。以下是常见的字段及其含义: - **name**: 定义项目的名称[^1]。 - **version**: 表示当前项目的版本号,遵循语义化版本控制 (SemVer)[^1]。 - **description**: 对项目的简单描述[^2]。 - **main**: 指定程序的入口文件,默认为 `index.js`[^1]。 - **scripts**: 配置脚本命令,例如构建、测试等操作[^2]。 - **dependencies**: 列出生产环境中必需的依赖包及其版本范围[^2]。 - **devDependencies**: 开发阶段使用的依赖项,如工具链或调试器。 - **author**: 作者的信息,通常是姓名或邮箱地址[^1]。 - **license**: 定义项目的开源许可协议[^1]。 #### 2. 创建方式 有两种主要方法可以生成 `package.json` 文件: - 使用交互式命令 `yarn init` 或 `npm init`,按照提示逐步输入必要的信息。 - 手动编辑该文件并保存到项目根目录中[^2]。 #### 3. 主要功能 - 描述项目基本信息:通过标准化的字段记录软件的相关细节。 - 管理依赖库:指定所需安装的第三方模块列表及其兼容性约束条件。 - 自定义生命周期事件:允许开发者绑定特定动作至某些钩子函数上执行定制逻辑。 ```json { "name": "example_project", "version": "0.1.0", "description": "A simple example project demonstrating the use of package.json.", "main": "src/index.js", "scripts": { "start": "node src/index.js", "test": "jest" }, "dependencies": { "express": "^4.17.1" }, "devDependencies": { "eslint": "^8.0.0", "jest": "^27.0.0" }, "author": "John Doe <john.doe@example.com>", "license": "ISC" } ``` 以上是一个典型的 `package.json` 示例文件结构。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张三风啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值