在前端开发的工作中,我们不可避免的会使用到包管理器来初始化项目,常用的有npm
、yarn
,初始化的快捷命令也特别的类似: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项目清单
上图是一个简洁版的package内容,package.json
文件中的内容没有固定的要求。 唯一的要求是必须遵守 JSON 格式
,否则,尝试以编程的方式访问其属性的程序则无法读取它。
主要属性说明
version
表明应用当前的版本。name
设置应用程序/软件包的名称。description
是应用程序/软件包的简短描述。main
设置应用程序的入口文件。private
如果设置为true
,则可以防止应用程序/软件包被意外地发布到npm
。scripts
定义一组可以运行的node
脚本。dependencies
设置生产环境作为依赖安装的npm
包的列表。devDependencies
设置开发依赖安装的npm
包的列表。engines
设置软件包/应用程序运行的环境版本依赖信息。browserslist
用于告知开发者要支持的浏览器(及其版本)。
团队协作属性说明
author
作者的名称keywords
项目的关键字 便于检索description
项目的描述文本contributors
项目的贡献者bugs
项目问题的跟踪器类似issues页面homepage
项目的主页面version
项目当前的版本号license
项目的许可证书repository
项目仓库所在的位置
特殊属性说明
package.json
文件还可以承载命令特有的配置,例如 Babel、ESLint、Typescript、Git 等。
每个都有特有的属性,例如 eslintConfig
、babel
等。 它们是命令特有的,可以在相应的命令/项目文档中找到如何使用它们。
{
"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.0
、1.5.0
等,但不能更新到2.*.*
或更高版本。~
: 如果写入的是〜1.0.0
,则当运行npm update
时,会更新到补丁版本:即1.0.1
、1.0.3
可以,但1.1.0
不可以。>
: 接受高于指定版本的任何版本。>=
: 接受等于或高于指定版本的任何版本。<=
: 接受等于或低于指定版本的任何版本。<
: 接受低于指定版本的任何版本。=
: 接受确切的版本。-
: 接受一定范围的版本。例如:2.1.0 - 2.6.2
。||
: 组合集合。例如< 2.1 || > 2.6
。