深入浅出Package.json
什么是 package.json?
package.json 文件是一个用于描述和管理项目的配置文件。它包含了项目的元数据,依赖包信息,脚本命令、项目配置、其他字段等。
一个较为详细的示例
{
"name": "@ixyzorg/example", //项目名称
"version": "1.0.0", //项目版本号
"description": "项目描述",
"author": "IXYZ <m@ixyz.org> (https://github.com/ixyzorg)", //作者信息
"license": "MIT", //许可协议
"keywords": ["example", "demo"], //关键字
"homepage": "https://github.com/ixyzorg/example#readme", //项目主页
"private":true,//设置包是否是私有的,设置为true无法发不到npm 注册表
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ixyzorg/example.git"
}, //存放的github仓库地址
"bugs": {
"url": "https://github.com/ixyzorg/example/issues"
}, //提交BUG的地址
"unpkg":"CDN地址",
"main": "dist/index.js", //指定模块的主入口文件,适用于 CommonJS 环境(如 Node.js),如果没有指定 main,默认入口为包根目录下的 index.js。
"module": "dist/index.mjs",//制定模块的模块入口文件,适用于 ES Module 环境。
"exports": {
"import": "./esm/index.mjs",
"require": "./cjs/index.cjs",
}, //main 和 module 是历史遗留的字段,exports 是更现代的字段,提供更强大的功能,可以根据不同的环境、平台、模块系统等提供灵活的导出方式,避免暴露不必要的内部文件,提供更高的封装性和安全性。
"types": "dist/index.d.ts", //指定模块的类型入口文件,适用于 TypeScript 环境。
"files": ["dist", "README.md"], //发布 npm 时指定需要上传的文件或者目录。
"scripts": {
"start": "node dist/index.js",
"build": "tsc && webpack --mode production"
}, //用于执行 npm 脚本,比如 start、build 等。
"bin": {
"mycli": "./bin/cli.js"
},//指定包中的可执行文件.用户可以使用 npx my-cli-tool mycli 或全局安装后直接运行 mycli 命令来执行 ./bin/cli.js 脚本
"dependencies": {
"axios": "^1.5.0",
"vue": "^3.3.0"
}, //项目依赖包列表,生产环境中必须要
"devDependencies": {
"eslint": "^8.50.0",
"prettier": "^3.0.0",
"jest": "^29.7.0"
}, //开发环境依赖包 打包时不需要
/**
1.告诉使用者包需要一个特定的依赖(通常是核心库,比如 react 或 vue),并指定该依赖的版本范围,
2.如果项目中已经存在这个依赖,就不会重复安装,而是直接使用上层项目的版本
典型使用场景:
1.插件生态:例如,React 组件库需要使用者安装 react 和 react-dom。
2.工具集成:例如,Babel 插件需要依赖 @babel/core。
如果要开发组件库,请详细研究此字段.
*/
"peerDependencies": {
"vue": ">=3.0.0"
},
"engines": {
"node": ">=16.0.0",
"npm": ">=8.0.0"
}, //指定包支持的 Node.js版本,以及其他相关的运行环境工具版本(如 npm 或 yarn)
}
版本号说明
一般项目都是x.y.z格式,其中X是主版本号,Y是次版本号,Z是补丁版本号。 主版本号(Major Version): 主要的更新,可能包括新的功能、不兼容的API更改等。例如,从1.0.0升级到2.0.0。 次版本号(Minor Version): 次要的更新,可能包括新的功能或增强功能,但不包括不兼容的API更改。例如,从1.0.0升级到1.1.0。 补丁版本号(Patch Version): 错误修复或bug修复。例如,从1.0.0升级到1.0.1。
x.y.z:严格指定某个版本,必须与该版本完全匹配。
^x.y.z:允许安装主版本号相同,次版本号或修订版本号更新的版本,但不跨主版本号。
~x.y.z:允许安装修订版本号更新的版本,但不跨次版本号。