无论如何可以将jsdoc与打字稿文件一起使用吗?我尝试使用jsdoc-babel此配置
{
"plugins": [
"node_modules/jsdoc-babel"
],
"babel": {
"extensions": [
"js",
"es6",
"jsx",
"ts",
"tsx"
]
}
}
Run Code Online (Sandbox Code Playgroud)
但是不行,也许我们可以手动转译ts文件,然后生成jsdocs?我知道像 typedoc 这样的替代品,但它缺乏许多重要的功能。
那么你们无论如何都使用带有打字稿的 jsdoc 吗?
虽然正如@Remi 所说TypeDoc的更适合 TypeScript,但我使用 JSDoc 来更好地进行 jsdoc 到 Markdown 转换(在撰写本文时)。
编译 TypeScript 并在编译后的代码中使用 JSDoc
> tsc && nodemon node_modules/.bin/jsdoc -c jsdoc.json dist/**/*
我将下面的方法与 jsdoc2markdown (使用 jsdoc)一起使用。使用jsdoc-babel, @babel/cli, @babel/core, @babel/preset-env,@babel/preset-typescript和以下 jsdoc 配置:
{
"source": {
"includePattern": ".+\\.ts(doc|x)?$",
"excludePattern": ".+\\.(test|spec).ts"
},
"plugins": [
"plugins/markdown",
"node_modules/jsdoc-babel"
],
"babel": {
"extensions": ["ts", "tsx"],
"ignore": ["**/*.(test|spec).ts"],
"babelrc": false,
"presets": [["@babel/preset-env", { "targets": { "node": true } }], "@babel/preset-typescript"],
"plugins": ["@babel/proposal-class-properties", "@babel/proposal-object-rest-spread"]
}
}
Run Code Online (Sandbox Code Playgroud)
这个配置:
@babel/preset-env, 以当前节点版本为目标进行转换。(您可以根据自己的需要进行更改和测试)=> 请参阅preset-env 文档@babel/preset-typescript赋予 babel 解析 TypeScript 的能力Babel和TypeScript在转译过程中删除了一些 JSDoc 注释:
通过添加如下所示的 Stub 代码可以解决这个问题:
let STUB = 1;
/**
* Some description
* @typedef {Object} Config
* @property {string} name - Name of the config.
* @property {string} color - Color of choice.
*/
STUB = 1;
export type Config = {
name: string;
color: string;
};
Run Code Online (Sandbox Code Playgroud)
很久以前,我使用 jsdoc-babel 编写了一个 wiki 页面,用于将 TypeScript 与 jsdoc2md 结合使用。
它可能有帮助:https : //github.com/jsdoc2md/jsdoc-to-markdown/wiki/How-to-document-TypeScript
这不是直接问什么,而是与之密切相关。以下工作流程可能有用:
例子
$ typedoc --plugin typedoc-plugin-markdown --mode file --out docs
$ npx concat-md --decrease-title-levels --dir-name-as-title docs > README.md
Run Code Online (Sandbox Code Playgroud)
尽管将 JSDoc 与 Typescript 结合使用有一定的好处,例如:
缺点是采用 TypeScript 需要大量工作才能将构建工具适应您当前的流程(正如您当前正在经历的那样)
相反,您可以使用类似http://typedoc.org/的内容
它将持续关注您的文档更改,并将在代码库更改的基础上重新构建。
来源:https ://blog.cloudflare.com/generate-documentation-for-typescript-projects/#whynotjsdoc