TypeDoc plugin to resolve import target and inject import code block








* π΅ Introduction
* π Get started
* βοΈ Options
* 𧬠Types
* PluginOptions
* Reflection
* π§° TSDoc configuration
* π€ Contribute
* π Author
* βοΈ License
* π° Changelog
* π§± Related packages
This TypeDoc plugin allows you to map your exported
module members to your package.json exports field.
It adds support for @importTarget JSDoc tag to use
in combination with @module tag.
Just add tag to the top-level JSDoc comment:
``js
// foo.js
/**
* @module
* @importTarget ./foo
*/
export class Foo {}
export function foo () {}
`
The exported members Foo and foo will have auto-injected import code block
in their description like:
``markdown`js`
import { Foo } from 'example/foo'``
> Note that the exported members reflections will have the _importTargetReflection
> property set. See type below.
`sh`
npm install -D typedoc-plugin-import-target
Add the plugin in your typedoc.config.js file:
`js
// typedoc.config.js
export default {
entryPoints: [
'./src/index.ts'
],
plugin: [
'typedoc-plugin-import-target'
]
}
`
Let's run the typedoc command!
This plugin supports some options. See PluginOptions type below.
For example, in your typedoc.config.js file:
`js
// typedoc.config.js
/**
* @type {import('typedoc').TypeDocOptions & import('typedoc-plugin-import-target').PluginOptions}
*/
export default {
entryPoints: [
'./src/index.ts'
],
plugin: [
'typedoc-plugin-import-target'
],
/**
* typedoc-plugin-import-target options
*/
importTarget: {
// Force "ts" language for code blocks
codeBlockLang: 'ts',
// Ignore package.json "exports" field
ignorePackageExports: true,
// Write your own injection logic
inject (reflection, name, importTarget, lang) {
// ...
}
}
}
`
> π‘ You don't need to add "@importTarget" to TypeDoc blockTags option
`tsjs
export interface PluginOptions {
/**
* typedoc-plugin-import-target specific options.
*/
importTarget?: {
/**
* The language to use in markdown code blocks.
* Note that this option does not affect code blocks for any
* type reflection (always "ts"). Default: false
*/
codeBlockLang?: 'js' | 'ts'
/**
* Ignore package.json "exports" field. Default:
*/
ignorePackageExports?: boolean
/**
* Provide your own function to inject import code block
* @param reflection - The reflection
* @param name - The exported member name
* @param lang - The code block language
*/
inject?: (reflection: Reflection, name: string, importTarget: string, lang?: string) => void
}
}
`
`ts
export interface Reflection extends TypeDoc.Reflection {
/**
* The resolved import target as string
*/
_importTarget?: string
}
`
If you use a tsdoc.json configuration file in your project, you can
extend your own config with this plugin TSDoc config file:
`json``
// tsdoc.json
{
"$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
"extends": [
"@microsoft/api-extractor/extends/tsdoc-base.json",
"typedoc/tsdoc.json",
"typedoc-plugin-import-target/extends/tsdoc.json"
]
}
> π See also the TypeDoc tags
> documentation.
You would like to contribute to this project? You are welcome!
First, please check:
* the contribution guide
* the code of conduct
Made with β€ by HervΓ© Perchec
See all changes to this project in the CHANGELOG.md file.
* typedoc
*
README.md - this file was auto generated with juisy README templater. Don't edit it.