package.json文件里面的解读

一、name:项目名字
二、version:项目版本
三、repository:项目的仓库地址以及版本控制信息。
四、description:项目的描述,会展示在 npm 官网,让别人能快速了解该项目。
五、keywords:一组项目的技术关键词,增加搜索机会,好的关键词可以帮助别人在 npm 官网上更好地检索到此项目,增加曝光率。
六、homepage:项目主页的链接,通常是项目 github 链接,项目官网或文档首页。,简称标题
七、bugs:项目bug反馈地址,通常是一个链接
八、license:项目的开源许可证
九、author:项目作者

文件配置

一、files:项目在进行npm发布时,可以通过files指定需要跟随一起发布的内容来控制npm包的大小,避免安装时间太长,般情况下,files 里会指定构建出来的产物以及类型文件,而 src,test 等目录下的文件不需要跟随发布。
二、type: node 支持 ES 模块后,要求 ES 模块采用 .mjs 后缀文件名。只要遇到 .mjs 文件,就认为它是 ES 模块。如果不想修改文件后缀,就可以在 package.json文件中,指定 type 字段为 module。
三、main:项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件,因为 main 字段里指定的是项目的入口文件,在 browser 和 Node 环境中都可以使用。
四、如果不设置 main 字段,那么入口文件就是根目录下的 index.js。main:项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件,因为 main 字段里指定的是项目的入口文件,在 browser 和 Node 环境中都可以使用。如果不设置 main 字段,那么入口文件就是根目录下的 index.js。
五、browser:main 字段里指定的入口文件在 browser 和 Node 环境中都可以使用。如果只想在 web 端使用,不允许在 server 端使用,可以通过 browser 字段指定入口。
六、module:同样,项目也可以指定 ES 模块的入口文件,这就是 module 字段的作用。
七、exports:node 在 14.13 支持在 package.json 里定义 exports 字段,拥有了条件导出的功能。
八、exports 字段可以配置不同环境对应的模块入口文件,并且当它存在时,它的优先级最高。比如使用 require 和 import 字段根据模块规范分别定义入口:
九、workspaces:目的工作区配置,用于在本地的根目录下管理多个子项目。可以自动地在 npm install 时将 workspaces 下面的包,软链到根目录的 node_modules 中,不用手动执行 npm link 操作。

脚本设置

一、scripts:指定项目的一些内置脚本命令,这些命令可以通过 npm run 来执行。通常包含项目开发,构建 等 CI 命令
二、config:config 用于设置 scripts 里的脚本在运行时的参数。比如设置 port 为 3001

依赖配置

一、dependencies:行依赖,也就是项目生产环境下需要用到的依赖。比如 react,vue,状态管理库以及组件库等
二、devDependencies:开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发,通常包括项目工程化工具比如 webpack,vite,eslint 等。
三、peerDependencies:同伴依赖,一种特殊的依赖,不会被自动安装,通常用于表示与另一个包的依赖与兼容性关系来警示使用者。比如我们安装 A,A 的正常使用依赖 B@2.x 版本,那么 B@2.x 就应该被列在 A 的 peerDependencies 下,表示“如果你使用我,那么你也需要安装 B,并且至少是 2.x 版本”。比如 React 组件库 Ant Design,它的 package.json 里 peerDependencies
四、optionalDependencies:可选依赖,顾名思义,表示依赖是可选的,它不会阻塞主功能的使用,安装或者引入失败也无妨。这类依赖如果安装失败,那么 npm 的整个安装过程也是成功的。比如我们使用 colors 这个包来对 console.log 打印的信息进行着色来增强和区分提示,但它并不是必需的,所以可以将其加入到 optionalDependencies,并且在运行时处理引入失败的逻辑。
五、peerDependenciesMeta:同伴依赖也可以使用 peerDependenciesMeta 将其指定为可选的。
六、bundleDependencies:打包依赖。它的值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包。
七、overrides:overrides 可以重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换。

发布配置

一、private:如果是私有项目,不希望发布到公共 npm 仓库上,可以将 private 设为 true。
二、publishConfig:名思义,publishConfig 就是 npm 包发布时使用的配置。比如在安装依赖时指定了 registry 为 taobao 镜像源,但发布时希望在公网发布,就可以指定 publishConfig.registry。

系统配置

一、engines:一些项目由于兼容性问题会对 node 或者包管理器有特定的版本号要求,
json
复制代码"engines": {
  "node": ">=14 <16",
  "pnpm": ">7"
}

要求 node 版本大于等于 14 且小于 16,同时 pnpm 版本号需要大于 7。

二、os:在 linux 上能正常运行的项目可能在 windows 上会出现异常,使用 os 字段可以指定项目对操作系统的兼容性要求。
三、cpu:指定项目只能在特定的 CPU 体系上运行。

第三方配置

一、types 或者 typings:指定 TypeScript 的类型定义的入口文件
二、unpkg:可以让 npm 上所有的文件都开启 CDN 服务。比如 vue package.json 的 unpkg 定义为 dist/vue.global.js
三、jsdelivr:与 unpkg 类似,vue 通过如下的配置
四、browserslist:设置项目的浏览器兼容情况。babel 和 autoprefixer 等工具会使用该配置对代码进行转换。当然你也可以使用 .browserslistrc 单文件配置。
五、sideEffects:显示设置某些模块具有副作用,用于 webpack 的 tree-shaking 优化。比如在项目中整体引入 Ant Design 组件库的 css 文件。
六、lint-staged:lint-staged 是用于对 git 的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作。
  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值