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.
Add a
tsconfig.json
file based on Deno's impliedtsconfig.json
file, then removelib
and setallowImportingTsExtensions
.Add a
typedoc.json
file withentryPoints
andskipErrorChecking
set.Alternatively run TypeDoc with with the
--skipErrorChecking
flag and provide the entry points.This worked with the following versions: