package.json字段说明

字段

javascript 复制代码
{
  "name": "@mypackage/xxx",
  "version": "2.1.0",
  "description": "xxx",
  "main": "src/index.ts", // commonjs模块
  "module": "src/index.ts", // es模块
  "scripts": {
    "prepack": "yarn build" //在执行npm publish的时候,会先执行该命令进行打包
  },
  "publishConfig": {
    "registry": "https://npm.xxx.io",
    "main": "lib/index.js", // 打包后的index.js为空的话,那我们在使用该包的时候,可能需要导出完整的路径,比如 import {TestId} from '@mypackage/xxx/utils/constants.ts'
    "module": "es/index.js"
  },
  "files": [ // 发布的包只包含lib,es文件夹和packgae.json和README.md文件
    "lib",
    "es"
  ],
}

main:包的主要入口文件。当其他项目使用您的包时,它们将引入您指定的 main 文件。通常,这是一个 JavaScript 文件,用于导出包的功能、类或模块。

publishConfig:用于配置发布到npm相关的配置。

  • main:commonjs模块文件入口,当包被发布后,会用该字段替换掉上一级的main字段publishConfig.main 字段需要与files字段一起使用,以确保发布的包中包含指定的入口文件。
  • module:es模块文件入口,同理

files:指定哪些文件应该包含在发布的包中

  • 当使用 npm publish 命令发布一个包时,files 字段定义了应该包含在包中的文件和目录。只有在 files 字段中列出的文件和目录才会被包含在发布的包中,其他文件将被忽略。
  • files 字段是可选的,如果未定义,则默认情况下将包含所有文件。如果为空的话files:[],发布的包将不包含任何文件。

Q & A

(1) 打包后如果指定的入口文件lib/index.js为空会有什么影响?

如果在 package.json 文件中指定的入口文件 lib/index.js 是一个空文件,将会有以下影响:

  • 无法正确导入包:如果 lib/index.js 是空文件,其他用户在导入您的包时可能会遇到问题。导入语句可能无法找到有效的导出内容,导致运行时错误或导入失败。

  • 功能缺失:由于入口文件为空,包中可能没有任何可用的功能或模块。这意味着其他用户无法使用您的包提供的任何功能,因为没有可访问的代码。

  • 包体积可能较小:由于入口文件为空,包中可能没有任何实际的代码文件。这可能导致发布的包体积较小,因为没有需要包含的实际代码文件。

(2) 简述一下该命令yarn npm publish所做的操作

  • 构建项目: 首先,Yarn 会执行构建过程,根据项目中的配置文件(如 package.json中的"prepack" 生命周期脚本是在打包(packaging)过程之前执行的脚本,用于进行一些与打包相关的操作,例如清理临时文件、生成额外的构建文件、修改配置等)和脚本定义,将源代码转换为可发布的形式。这可能涉及编译、打包、压缩等操作,具体取决于项目的配置和需求。

  • 验证包: 在构建完成后,Yarn 会对生成的包进行验证。这包括检查包的完整性、依赖项的正确性以及其他可能的问题。如果验证失败,发布过程将被中止,并显示相应的错误信息。

  • 登录到 npm: 如果您尚未登录到 npm(Node Package Manager),Yarn 会提示您进行登录。您需要提供 npm 的用户名和密码,或者使用其他支持的身份验证方法。

  • 发布包: 接下来,Yarn 会将构建好的包发布到 npm 的注册表中。这将使其他开发者能够通过 npm 安装和使用您的包。Yarn 会将包的元数据(如名称、版本、描述等)以及包含的文件上传到注册表。

  • 确认发布: 发布完成后,Yarn 会显示成功的消息,并提供发布的包的 URL。您可以使用该 URL 查看您的包在 npm 注册表上的页面。

参考文档

package.json

相关推荐
蜗牛快跑2132 分钟前
面向对象编程 vs 函数式编程
前端·函数式编程·面向对象编程
Dread_lxy3 分钟前
vue 依赖注入(Provide、Inject )和混入(mixins)
前端·javascript·vue.js
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
榴莲千丞1 小时前
第8章利用CSS制作导航菜单
前端·css
奔跑草-1 小时前
【前端】深入浅出 - TypeScript 的详细讲解
前端·javascript·react.js·typescript
羡与1 小时前
echarts-gl 3D柱状图配置
前端·javascript·echarts
guokanglun1 小时前
CSS样式实现3D效果
前端·css·3d
咔咔库奇1 小时前
ES6进阶知识一
前端·ecmascript·es6
渗透测试老鸟-九青2 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss
龙猫蓝图2 小时前
vue el-date-picker 日期选择器禁用失效问题
前端·javascript·vue.js