在前端开发的工作中,我们不可避免的会使用到包管理器来初始化项目,常用的有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。