I am using Deno in one of my projects and I want to generate the documentation with typedoc. I am facing a lot of problems with dependencies because they do not get resolved correctly, so typedoc fails. I have the following tsconfig.json
:
{
"compilerOptions": {
"module": "amd",
"target": "esnext",
"baseUrl": ".",
"paths": {
"http://*": ["../../../.deno/deps/http/*"],
"https://*": ["../../../.deno/deps/https/*"],
"*.ts": ["*"]
},
"plugins": [
{
"name": "typescript-deno-plugin"
}
]
}
}
The first two entries in paths
resolve the native modules of Deno (like its assertion library). The problem comes when I use another library like Cheerio, importing it like this in my deps.ts
file:
// @deno-types="https://cdn.jsdelivr.net/gh/justjavac/deno_cheerio/cheerio.d.ts"
import cheerio from "https://dev.jspm.io/cheerio/index";
Note: I have to import the types from an external source because the types declared in dev.jspm.io do not work because they include the /// reference
directive.
I have the following typedoc.js
config file:
// deno-lint-ignore-file
module.exports = {
out: "./docs-build",
mode: "file",
};
If I run typedoc src/
, I get the following error:
Using TypeScript 4.0.3 from /home/antonio/.nvm/versions/node/v12.18.1/lib/node_modules/typescript/lib
Error: /home/antonio/manga-api/src/deps.ts(8)
Cannot find module 'https://dev.jspm.io/cheerio/index'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
Note2: I'm using deno but typedoc
is installed with npm globally, along typescript
and typescript-deno-plugin
.
Any idea how to make typedoc
work correctly with Deno?
I was able to get TypeDoc working (at least with a simple library) by performing these steps.
Output Deno's types so TypeDoc can find them.
deno types > deno.d.ts
Add a tsconfig.json
file based on Deno's implied tsconfig.json
file, then remove lib
and set allowImportingTsExtensions
.
{
"compilerOptions": {
"allowImportingTsExtensions": true,
"allowJs": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"inlineSourceMap": true,
"isolatedModules": true,
"jsx": "react",
"module": "esnext",
"moduleDetection": "force",
"strict": true,
"target": "esnext",
"useDefineForClassFields": true
}
}
Add a typedoc.json
file with entryPoints
and skipErrorChecking
set.
{
"entryPoints": ["./mod.ts"],
"skipErrorChecking": true
}
Alternatively run TypeDoc with with the --skipErrorChecking
flag and provide the entry points.
typedoc --skipErrorChecking ./mod.ts
This worked with the following versions: