添加链接描述
一、必须属性
- name
定义项目的名称,不能以".“和”_"开头,不能包含大写字母 - version
定义项目的版本号,格式为:大版本号.次版本号.修订号
二、描述信息
- description 项目描述
- keywords 项目关键词
- author 项目作者
- contributors 项目贡献者
- homepage 项目主页地址
- repository 项目代码仓库地址
- bugs 项目提交问题的地址
- funding 指定项目的资金支持方式和链接
三、依赖配置
- dependencies 生产环境的依赖包
如果不使用脱字符(^),安装的版本号固定;如果使用,则能安装当前大版本的最新版本,在package-lock.json中可查看当前实际安装的版本。 - devDependencies 开发环境的依赖包,例如webpack、vite、babel、ESLint等。
- peerDependencies
对等依赖的作用:
减小打包体积:例如使用react开发的组件库,安装react是必不可少的,而使用组件库的开发者,本地项目肯定安装了react,因此开发的组件库中不必把react打包进去(期望项目的使用者来提供这些模块的实现)。
版本一致性:使用你的组件库的开发者需要确保他们项目中安装了与你声明的对等依赖版本兼容的包,以确保组件库正常运行。
示例:声明要使用组件库,需在项目中安装大于17.0.1版本的react - peerDependenciesMeta
将对等依赖标记为可选,如果用户没有安装对等依赖,npm不会发出警告
"peerDependenciesMeta":{
"react":{}
}
- bundledDependencies
声明捆绑依赖项(使用情景较少) - optionalDependencies
声明可选依赖项(使用情景较少) - engines
声明对npm或node的版本要求
"engines":{
"node":">=8.10.3 <12.13.0",
"npm": ">=6.9.0"
}
目前对NPM来说,engines只是起一个说明的作用,即使用户安装的版本不符合要求,也不影响依赖包的安装。但使用pnpm 和 yarn安装,如果版本不符合要求会导致安装失败。
8. workspaces
单个代码库中统一管理多个包(monorepo),在workspaces声明目录下的package会软链到根目录的node_modules中。
- 初始化项目
- 声明本项目是workspaces模式
"private":"true","workspaces":[ "packages/*" ]
表示所有子包都在packages文件夹下 - 创建子包p1
npm init -w packages/p1 -y
在node_modules/.package-lock.json中可以看到 “link”: true 链接符号信息 - 新建packages/p1/index.js
module.exports="p1包"
- 创建子包p2
npm init -w packages/p2 -y
- 将子包p1添加到p2中
npm i p1 -w p2
安装,卸载等命令都是一样的,只是多了"–workspace="参数(简写-w),用来指定在哪个包中执行命令 - 子包p2使用p1
const p1 = require("p1");console.log("使用",p1);module.exports = 'p2包'
workspaces功能与lerna类似,如果只需简单地管理多个包,workspaces足够了。lerna具有版本管理,发包提示,简化多包项目发布流程等更多功能。
四、脚本配置