Fra*_*lle 6 jsdoc reactjs webpack visual-studio-code lerna
Github 项目仓库:https : //github.com/Fralleee/lerna-intellisense-jsdoc-vscode
我有一个包含两个包(Web 和 Api)的 monorepo 项目,它们使用 lerna 链接。Web 项目导入了 Api 包,并且使用 JSDoc 记录了 Api 请求。
如果 Api 包发布并从 NPM 导入,文档将被完美加载。

但是,如果它通过 lerna 和 webpack devserver 在本地运行,则文档将丢失并且仅在本地代码中可用(在 Api 文件夹中)。

我曾尝试使用模块、命名空间和搜索不同类型的解决方案来编写文档,但似乎都不起作用。
JSDoc 和功能:
/**
* Get comments from jsonplaceholder API
* @namespace API
* @module
* @param {GetCommentsRequestExample} input PostId
* @returns {Promise.<GetCommentsResponseExample>} Array of comments
*/
export const getComments = input => apiGet('https://jsonplaceholder.typicode.com/comments', input, GetCommentsRequest, GetCommentsResponse)
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 JSDoc 在包发布时有效,但在本地运行时无效。
经过 2 小时的额外测试后编辑
我使用 Api 包中的索引文件导出所有内容。此索引文件从包中导入所有内容,然后将其导出,有点像单一入口点。
如果我直接在此索引文件中定义函数和 JSDoc,则 JSDoc 可用于其他包,即使在本地运行时也是如此。
因此,导出-> 导入-> 再次导出似乎是一个问题,这会弄乱 JSDoc。这显然不是解决方案,因为 Api 包有太多代码无法放入单个文件。
我在使用 VSCode 和 Lerna 时遇到了同样的问题。解决方案是将 a 添加jsconfig.json到 monorepo 的根目录(或它所在的任何lerna.json位置)。
src/发生这种情况是因为 VSCode 需要被告知它应该在每个包的目录中查找提示。我认为它会默认查找main属性中指定的文件package.json(因此当构建包时,它可以在该文件中看到提示 - 显然对开发没有好处!)
以下示例配置的一些假设:
packages/包含所有包的目录src/包含代码的目录@foo(例如,包被称为@foo/API或类似)将以下内容添加到jsconfig.json:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@foo/*": ["packages/*/src"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
重新启动 VSCode/重新打开文件夹后,IntelliSense 提示应该正确显示。如果您没有为包使用命名空间,您可以添加多行paths,明确指向正确的src/目录或使用文档中的include语法。
希望这可以帮助!
编辑:
每个包jsconfig.json也需要一个,以便它知道如何正确解析同级包,例如,
{
...
"paths": {
"@foo/*": ["../*/src"]
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |