overrides 可以重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换 。
比如某个依赖 A,由于一些原因它依赖的包 foo@1.0.0 需要替换,我们可以使用 overrides 修改 foo 的版本号:
"overrides": { "foo": "1.1.0-patch" }
当然这样会更改整个依赖树里的 foo,我们可以只对 A 下的 foo 进行版本号重写:
"overrides": { "A": { "foo": "1.1.0-patch", } }
overrides 支持任意深度的嵌套 。
如果在 yarn 里也想复写依赖版本号,需要使用 resolution 字段,而在 pnpm 里复写版本号需要使用 pnpm.overrides 字段 。5. 发布配置
主要是和项目发布相关的配置 。
private
如果是私有项目,不希望发布到公共 npm 仓库上,可以将 private 设为 true 。
"private": true
publishConfig
顾名思义,publishConfig 就是 npm 包发布时使用的配置 。
比如在安装依赖时指定了 registry 为 taobao 镜像源,但发布时希望在公网发布,就可以指定 publishConfig.registry 。
"publishConfig": { "registry": "https://registry.npmjs.org/" }
6. 系统配置和项目关联的系统配置,比如 node 版本或操作系统兼容性之类 。这些要求只会起到提示警告的作用,即使用户的环境不符合要求,也不影响安装依赖包 。
engines
一些项目由于兼容性问题会对 node 或者包管理器有特定的版本号要求,比如:
"engines": { "node": ">=14 <16", "pnpm": ">7" }
要求 node 版本大于等于 14 且小于 16,同时 pnpm 版本号需要大于 7 。
os
在 linux 上能正常运行的项目可能在 windows 上会出现异常,使用 os 字段可以指定项目对操作系统的兼容性要求 。
"os": ["darwin", "linux"]
CPU
指定项目只能在特定的 CPU 体系上运行 。
"cpu": ["x64", "ia32"]
7. 第三方配置一些第三方库或应用在进行某些内部处理时会依赖这些字段,使用它们时需要安装对应的第三方库 。
types 或者 typings
指定 TypeScript 的类型定义的入口文件
"types": "./index.d.ts",
unpkg
可以让 npm 上所有的文件都开启 CDN 服务 。
比如 vue package.json 的 unpkg 定义为 dist/vue.global.js
"unpkg": "dist/vue.global.js",
当我们想通过 CDN 的方式使用链接引入 vue 时 。
访问 https://unpkg.com/vue 会重定向到 https://unpkg.com/vue@3.2.37/dist/vue.global.js,其中 3.2.27 是 Vue 的最新版本 。
jsdelivr
与 unpkg 类似,vue 通过如下的配置
"jsdelivr": "dist/vue.global.js",
访问 https://cdn.jsdelivr.NET/npm/vue 实际上获取到的是 jsdelivr 字段里配置的文件地址 。
文章插图
browserslist
设置项目的浏览器兼容情况 。babel 和 autoprefixer 等工具会使用该配置对代码进行转换 。当然你也可以使用 .browserslistrc 单文件配置 。
"browserslist": [ "> 1%", "last 2 versions" ]
sideEffects
显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化 。
比如在项目中整体引入 Ant Design 组件库的 css 文件 。
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
如果 Ant Design 的 package.json 里不设置 sideEffects,那么 webapck 构建打包时会认为这段代码只是引入了但并没有使用,可以 tree-shaking 剔除掉,最终导致产物缺少样式 。
所以 Ant Design 在 package.json 里设置了如下的 sideEffects,来告知 webpack,这些文件具有副作用,引入后不能被删除 。
"sideEffects": [ "dist/*", "es/**/style/*", "lib/**/style/*", "*.less" ]
lint-staged
lint-staged 是用于对 git 的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作 。
"lint-staged": { "src/**/*.{js,jsx,ts,tsx}": [ "eslint --fix", "git add -A" ] }
lint-staged 通常配合 husky 这样的 git-hooks 工具一起使用 。git-hooks 用来定义一个钩子,这些钩子方法会在 git 工作流程中比如 pre-commit,commit-msg 时触发,可以把 lint-staged 放到这些钩子方法中 。
推荐阅读
- Windows服务器管理工具 Windows Admin Center 部署及配置文档
- 对于一个叛逆完全不听话的孩子怎么办 孩子叛逆很不听话怎么办
- 覆流年|首播5集收视破亿,评分高达8.3,观众直言:剧情精彩、完全不够看
- 高一学生完全学不进去怎么办,高一学不进去了怎么办
- KVM虚拟机的安装\扩容\迁移\克隆\配置
- 李克勤|梁静茹战队那配置,能和李克勤打成平手,需要谢谢对手梁玉莹
- 苹果se配置和8一样吗 苹果se配置参数表和苹果8p对比
- 殷桃|“不怒自威”陈建斌从出道就长得成熟,“少年感”和他完全不搭边
- 娱乐圈|娱乐圈流行“忘年恋”?这一对组合男有才女有貌,却完全不被祝福
- h3c交换机配置聚合接口 华三交换机静态聚合配置