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

相关推荐
micro201014几秒前
Microsoft Edge 离线安装包制作或获取方法和下载地址分享
前端·edge
.生产的驴5 分钟前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
awonw8 分钟前
[前端][easyui]easyui select 默认值
前端·javascript·easyui
九圣残炎28 分钟前
【Vue】vue-admin-template项目搭建
前端·vue.js·arcgis
柏箱1 小时前
使用JavaScript写一个网页端的四则运算器
前端·javascript·css
TU^1 小时前
C语言习题~day16
c语言·前端·算法
学习使我快乐014 小时前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
bobostudio19954 小时前
TypeScript 设计模式之【策略模式】
前端·javascript·设计模式·typescript·策略模式
黄尚圈圈5 小时前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts