首页 > 解决方案 > 我可以从我自己的项目运行安装在“客户端”项目上的包吗?

问题描述

我知道这听起来像是一个奇怪的问题,让我尝试通过示例进一步解释它:

首先,我试图在一个简单的库中向 JSDoc 添加一些功能。我们称它为 jsdoc-extra。

当一个项目包含我的库时,它也应该安装 jsdoc。我也将 jsdoc 列为对我自己的库的依赖项。

jsdoc-extra > package.json

{
  [...]
  "dependencies": {
    [...]
    "jsdoc": "^3.6.6",
    [...]
  }
}

让我们假设一个“示例”项目正在尝试使用我的库(这是我现在实际运行的,从文件安装的)

{
  [...]
  "dependencies": {
    "jsdoc": "^3.6.6",
    "jsdoc-cov": "file:../jsdoc-cov",
    "jsdoc-ts-utils": "^1.1.2"
  }
}

从我的jsdoc-extra代码中,我可以搜索并找到sample/node_modules/jsdoc/jsdoc.js安装在“客户端”应用程序(示例)上的那个,或者jsdoc-extra/node_modules/jsdoc/jsdoc.js在第一个不可用时使用我自己的。然后我可以执行它spawn

到目前为止,一切都很好。然而:

“客户端”(在这种情况下为示例项目)可能在其 jsdoc 设置中使用了一些插件,就像您在前面的代码片段中看到的那样,我安装了 ts-utils 作为示例。

因此,当我在示例项目中时,尝试运行:

node_modules/jsdoc/jsdoc-extra.js -c jsdoc.json

(jsdoc.json 是我刚刚传递给它的标准 jsdoc 配置文件)

我收到这种错误:

(node:3961) UnhandledPromiseRejectionWarning: Error: ERROR: Unable to find the plugin "jsdoc-ts-utils"

似乎我的应用程序(jsdoc-extra)无法使用jsdoc-ts-utils安装在客户端(示例)项目上的那个,即使我运行示例自己安装的 jsdoc。

我希望能够像这样执行它,以便“客户端”项目可以在jsdoc-extra没有额外jsdoc配置的情况下执行,它将使用它已经用于常规 jsdoc 操作的任何内容。

我开始认为我最好的选择是实际编写一个 jsdoc 插件......

我知道这很多,并且可能令人困惑,如果您认为有必要,我很乐意提供更多信息。谢谢!

标签: javascriptnode.jsjsdoc

解决方案


我决定关闭它,而只写一个 jsdoc 插件。这是入侵它生成的数据以执行我想要的操作的更简单方法。我的额外功能将与文档生成相关联,这并不理想,但我会处理它......


推荐阅读