Embed shared text and code snippets from source files into destination files that appear on hover in IDEs. For example:
embedex
helps ensure a single source of truth while keeping sources runnable, linted, tested, and up-to-date with the code they are documenting.
Install as a dev dependency in your project:
npm install --save-dev embedex
Or globally:
npm install --global embedex
Add a source file to the ./examples
directory (configurable). The first line is a comma-separated list of destination file paths to embed the source's file contents into. ./examples/greeter.ts
:
// README.md,src/greeter.ts
import { greet } from "@my-scope/greeter";
greet("world");
In the destination file, add an <embedex source="..."></embedex>
tag that includes the source file's path.
./README.md
:
# greeter
Greets a person by name.
<embedex source="examples/greeter.ts">
</embedex>
./src/greeter.ts
:
/**
* Greets a person by name.
*
* @example
* <embedex source="examples/greeter.ts">
* </embedex>
*/
function greet(name: string) {
console.log(`Hello, ${name}!`);
}
Run npx embedex
.
The source is embedded!
./README.md
:
# greeter
Greets a person by name.
<embedex source="examples/greeter.ts">
```ts
import { greet } from "@my-scope/greeter";
greet("world");
```
</embedex>
./src/greeter.ts
:
/**
* Greets a person by name.
*
* @example
* <embedex source="examples/greeter.ts">
*
* ```ts
* import { greet } from "@my-scope/greeter";
*
* greet("world");
* ```
*
* </embedex>
*/
function greet(name: string) {
console.log(`Hello, ${name}!`);
}
Usage: embedex [options]
Embed shared text and code snippets from source files into destination files.
Options:
-V, --version output the version number
-s, --sourcesGlob <pattern> sources glob pattern (default: "examples/**/*.{md,ts}")
-c, --check verify if sources are correctly embedded without making changes,
exits with non-zero code if updates are needed; useful for CI/CD
pipelines (default: false)
-v, --verbose show verbose output (default: false)
-h, --help display help for command
See package.json
scripts
for a list of commands.