项目基础—Package.json 解读

967 阅读2分钟

在前端开发的工作中,我们不可避免的会使用到包管理器来初始化项目,常用的有npmyarn,初始化的快捷命令也特别的类似:yarn init -y 或者 npm init -y,当然也可以按步骤一步步生成所需要的文件配置。

执行初始化命令 yarn示例

yarn init
yarn init v1.22.10
question name (packageDesc): package-desc-project
question version (1.0.0): 1.0.0
question description: a description for project
question entry point (index.js): main.js
question repository url: https://juejin.cn/user/2780044227521063
question author: Coder1921
question license (MIT):MIT
question private:
success Saved package.json
Done in 141.24s.

package.json项目清单

image.png

上图是一个简洁版的package内容,package.json 文件中的内容没有固定的要求。 唯一的要求是必须遵守 JSON 格式,否则,尝试以编程的方式访问其属性的程序则无法读取它。

主要属性说明

  • version 表明应用当前的版本。
  • name 设置应用程序/软件包的名称。
  • description 是应用程序/软件包的简短描述。
  • main 设置应用程序的入口文件。
  • private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm
  • scripts 定义一组可以运行的 node 脚本。
  • dependencies 设置生产环境作为依赖安装的 npm 包的列表。
  • devDependencies 设置开发依赖安装的 npm 包的列表。
  • engines 设置软件包/应用程序运行的环境版本依赖信息。
  • browserslist 用于告知开发者要支持的浏览器(及其版本)。

image.png

团队协作属性说明

  • author 作者的名称
  • keywords 项目的关键字 便于检索
  • description 项目的描述文本
  • contributors 项目的贡献者
  • bugs 项目问题的跟踪器类似issues页面
  • homepage 项目的主页面
  • version 项目当前的版本号
  • license 项目的许可证书
  • repository 项目仓库所在的位置

特殊属性说明

package.json 文件还可以承载命令特有的配置,例如 Babel、ESLint、Typescript、Git 等。 每个都有特有的属性,例如 eslintConfigbabel 等。 它们是命令特有的,可以在相应的命令/项目文档中找到如何使用它们。

{
  "name": "package-desc-project",
  "version": "1.0.0",
  "description": "a description for project",
  "keywords": ["package", "description"],
  "main": "main.js",
  "repository": "https://juejin.cn/user/2780044227521063",
  "author": "Coder1921",
  "contributes": {},
  "homepage": "项目的主页",
  "license": "MIT",
  "scripts": {
    "start": "node main.js"
  },
  "dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "devDependencies": {
    "rimraf": "^3.0.2",
    "semver": "^7.3.5"
  },
  "engines": {
    "node": ">= 13.10.0",
    "npm": ">= 6.9.0"
  },
  "browserslist": ["> 1%", "last 2 versions", "not ie <= 8"]
}

语义版本控制

语义版本控制的概念很简单:所有的版本都有 3 个数字:x.y.z,即表示主版本.次版本.补丁版本

  • x 第一个数字是主版本。
  • y 第二个数字是次版本。
  • z 第三个数字是补丁版本。
常见的版本规则符号说明:
  • ^: 只会执行不更改最左边非零数字的更新。 如果写入的是 ^1.0.0,则当运行 npm update 时,可以更新到 1.1.01.5.0 等,但不能更新到 2.*.* 或更高版本。
  • ~: 如果写入的是 〜1.0.0,则当运行 npm update 时,会更新到补丁版本:即 1.0.11.0.3 可以,但 1.1.0 不可以。
  • >: 接受高于指定版本的任何版本。
  • >=: 接受等于或高于指定版本的任何版本。
  • <=: 接受等于或低于指定版本的任何版本。
  • <: 接受低于指定版本的任何版本。
  • =: 接受确切的版本。
  • -: 接受一定范围的版本。例如:2.1.0 - 2.6.2
  • ||: 组合集合。例如 < 2.1 || > 2.6