跳转至

包条目

已安装的插件如何将 package.json 指向源条目和构建条目,以及 OpenClaw 解析它们的顺序。属于 插件入口点 参考的一部分。

包条目

已安装的插件将 package.json 中的 openclaw 字段同时指向源条目和构建条目:

{
  "openclaw": {
    "extensions": ["./src/index.ts"],
    "runtimeExtensions": ["./dist/index.js"],
    "setupEntry": "./src/setup-entry.ts",
    "runtimeSetupEntry": "./dist/setup-entry.js"
  }
}
  • extensions 和 setupEntry 是源条目,用于工作区和 git 检出开发。
  • runtimeExtensions 和 runtimeSetupEntry 选择构建条目,而不是对应的源条目。
  • 如果存在 runtimeExtensions,其数组长度必须与 extensions 匹配(条目按位置配对)。runtimeSetupEntry 要求存在 setupEntry。
  • 如果声明了 runtimeExtensions/runtimeSetupEntry 产物但缺失,安装会失败,并且发现过程会报告该条目的打包错误;OpenClaw 不会静默回退到源。
  • 如果没有显式运行时条目,通过 plugins.load.paths 或全局根进行的包发现会首先查找 dist/ 下匹配的 JavaScript 对应文件,然后查找 TypeScript 源条目旁边的文件。对于 src/ 条目,它会同时检查扁平化的 dist/ 输出和保留 dist/src/ 的输出。在每个位置,.mts 优先选择 .mjs,.cts 优先选择 .cjs;.ts 和 .tsx 依次尝试 .js、.mjs,然后 .cjs。安装、发现、设置、运行时加载和已发布包验证使用相同的候选顺序。
  • 解析到宿主自身捆绑插件树内部的 plugins.load.paths 条目会被发现为该捆绑插件,因此无论源旁边是否存在编译输出,它都会保留捆绑入口点和捆绑来源。选择捆绑插件自身的路径永远不会重新分类它。
  • 包安装和受管理的已安装包发现要求 TypeScript 扩展和设置条目具有编译输出。缺少编译输出是打包错误,而不是回退到 TypeScript 的理由。
  • 可信的本地/源开发路径在未声明运行时条目时可以使用 TypeScript。这些包括工作区插件、显式本地加载路径、未跟踪的本地插件目录以及链接的源检出。工作区发现会保留源条目,而不是推断构建对应文件。
  • 所有条目路径都必须保持在插件包目录内。运行时条目和推断的构建 JS 对应文件不会使逃逸的 extensions 或 setupEntry 源路径有效。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw