{"id":36500255,"url":"https://github.com/krisztianb/typedoc-plugin-merge-modules","last_synced_at":"2026-01-12T02:19:58.247Z","repository":{"id":39156042,"uuid":"332821599","full_name":"krisztianb/typedoc-plugin-merge-modules","owner":"krisztianb","description":"Plugin for TypeDoc that merges the content of modules","archived":false,"fork":false,"pushed_at":"2025-03-29T12:14:11.000Z","size":943,"stargazers_count":23,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-11-27T12:05:14.684Z","etag":null,"topics":["merge","modules","typedoc","typedoc-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krisztianb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-25T17:08:02.000Z","updated_at":"2025-10-24T14:12:11.000Z","dependencies_parsed_at":"2024-06-18T15:32:27.557Z","dependency_job_id":"64aa470a-afcc-48a0-9268-c89c2c983993","html_url":"https://github.com/krisztianb/typedoc-plugin-merge-modules","commit_stats":{"total_commits":99,"total_committers":4,"mean_commits":24.75,"dds":0.08080808080808077,"last_synced_commit":"49e556ff6dbb801cda9a302cee2c02409b669502"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/krisztianb/typedoc-plugin-merge-modules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisztianb%2Ftypedoc-plugin-merge-modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisztianb%2Ftypedoc-plugin-merge-modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisztianb%2Ftypedoc-plugin-merge-modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisztianb%2Ftypedoc-plugin-merge-modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krisztianb","download_url":"https://codeload.github.com/krisztianb/typedoc-plugin-merge-modules/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisztianb%2Ftypedoc-plugin-merge-modules/sbom","scorecard":{"id":570475,"data":{"date":"2025-08-11","repo":{"name":"github.com/krisztianb/typedoc-plugin-merge-modules","commit":"040e4d686cebd1a335e34b3944db80eeaffedc9c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/25 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: ISC License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T16:12:43.904Z","repository_id":39156042,"created_at":"2025-08-20T16:12:43.904Z","updated_at":"2025-08-20T16:12:43.904Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["merge","modules","typedoc","typedoc-plugin"],"created_at":"2026-01-12T02:19:57.790Z","updated_at":"2026-01-12T02:19:58.240Z","avatar_url":"https://github.com/krisztianb.png","language":"TypeScript","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=67UU75EUH4S8A"],"categories":[],"sub_categories":[],"readme":"[![NPM Version](https://badge.fury.io/js/typedoc-plugin-merge-modules.svg)](https://badge.fury.io/js/typedoc-plugin-merge-modules) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=67UU75EUH4S8A)\n\n# typedoc-plugin-merge-modules\n\nThis is a plugin for [TypeDoc](https://github.com/TypeStrong/typedoc) that merges the content of modules.\n\n**Remarks:**\n\nTypeDoc now supports a tag [`@mergeModuleWith`](https://typedoc.org/documents/Tags._mergeModuleWith.html) which can be used to achieve parts of what this plugin is capable of doing.\nIf that tag is enough for your use case we advise to use that tag instead of installing and using this plugin.\n\n**Use cases of this plugin:**\n\n* If you want to document an entire application and not a library, you can specify all files that you want to have documented as entry points for TypeDoc and use this plugin to merge all modules into the project root removing the extra module layer.\n* If you want to merge the content of some modules (maybe also by category) in the TypeDoc output, you can use this plugin and [module annotations](https://typedoc.org/guides/doccomments/#files) in your files to specify which modules should be combined.\n\n## Example\n\nHere is an example of how the navigation menu of TypeDoc's output changes when merging all modules into the project root using the plugin:\n\n![Example](https://raw.githubusercontent.com/krisztianb/typedoc-plugin-merge-modules/master/doc/example.png)\n\n## Installation\n\nThis module can be installed using [npm](https://www.npmjs.com/package/typedoc-plugin-merge-modules):\n\n```sh\n$ npm install typedoc-plugin-merge-modules --save-dev\n```\n\nThe plugin requires TypeDoc version 0.28.0 or above to be installed. After installation you need to activate the plugin with a [typedoc command line argument](https://typedoc.org/options/configuration/#plugin) or inside your [typedoc config file](https://typedoc.org/options/configuration/#json-files).\n\nHere is an example using a JavaScript config file:\n\n```js\n/** @type { import('typedoc').TypeDocOptionMap \u0026 import('typedoc-plugin-merge-modules').Config } */\nmodule.exports = {\n    out: \"output\",\n    entryPointStrategy: \"expand\",\n    entryPoints: [\"input/module1.ts\", \"input/module2.ts\"],\n    tsconfig: \"tsconfig.json\",\n    readme: \"MAIN.md\",\n    plugin: [\"typedoc-plugin-merge-modules\"],\n    mergeModulesRenameDefaults: true, // NEW option of TypeDoc added by this plugin\n    mergeModulesMergeMode: \"project\", // NEW option of TypeDoc added by this plugin\n};\n```\n\nAfter installation TypeDoc can be used normally and you can configure this plugin as described below.\n\n## Options\n\nThe following options are added to TypeDoc when the plugin is installed:\n\n| Name \u0026 Format | Description | Default |\n| ------------- | ----------- | ------- |\n| **mergeModulesRenameDefaults** `\u003cboolean\u003e` | Defines if the plugin should rename default exports to their original name. | `true` |\n| **mergeModulesMergeMode** `\u003c\"project\"\\|\"module\"\\|\"module-category\"\\|\"off\"\u003e` | Defines how the plugin should merge modules:\u003cbr/\u003e\u003cbr/\u003e\u003cul\u003e\u003cli\u003e`\"project\"` = The plugin merges the content of all modules into the project root.\u003c/li\u003e\u003cli\u003e`\"module\"` = The plugin merges modules with the same name. By default the filename is the module name, which you can overwrite using [module comments](https://typedoc.org/tags/module/).\u003c/li\u003e\u003cli\u003e`\"module-category\"` = Same as `\"module\"` but will only merge modules that have the same [category](https://typedoc.org/tags/category/).\u003c/li\u003e\u003cli\u003e`\"off\"` =  Disables the plugin.\u003c/li\u003e\u003c/ul\u003e | `\"project\"` |\n\nWhen you set `mergeModulesMergeMode` to `\"module\"` OR `\"module-category\"` in combination with [module comments](https://typedoc.org/tags/module/) you should add the tag `@mergeTarget` to the comment of the module whose comment should be used in the merge result.\n\n## Bugs\n\nPlease report bugs [here](https://github.com/krisztianb/typedoc-plugin-merge-modules/issues).\nThanks for your contribution!\n\n## Credits\n\nSpecial thanks go to the following people that contributed to this project:\n\n-   [Gerrit Birkeland](https://github.com/Gerrit0) for the suggested solution and code example.\n-   [Felipe Santos](https://github.com/felipecrs) for suggesting improvements.\n-   [Sho Otani](https://github.com/beijaflor) for implementing the merging of modules by name.\n-   And all the other [contributors](https://github.com/krisztianb/typedoc-plugin-merge-modules/graphs/contributors).\n\n## Donate\n\nIf you find this piece of software helpful, please consider a donation. Any amount is greatly appreciated.\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=67UU75EUH4S8A)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrisztianb%2Ftypedoc-plugin-merge-modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrisztianb%2Ftypedoc-plugin-merge-modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrisztianb%2Ftypedoc-plugin-merge-modules/lists"}