File Imports
This page demonstrates the new @file: syntax for importing diagrams from external files.
Basic Usage
Instead of writing diagram code inline, you can reference an external file:
markdown
```bpmn
@file:./diagrams/process.bpmn
```Examples
BPMN from File
Mermaid from File
PlantUML from File
Configuration
Enable/Disable File Imports
ts
configureDiagramsPlugin(md, {
enableFileImports: true, // default: true
});Restrict Allowed Directories
For security, you can restrict which directories files can be imported from:
ts
configureDiagramsPlugin(md, {
allowedImportDirs: [
'./docs/diagrams',
'./shared/diagrams',
],
});This prevents importing files from outside the specified directories.
Path Resolution
Paths are resolved relative to the markdown file containing the import:
@file:./diagrams/test.bpmn- Relative to current file@file:../shared/test.mmd- Parent directory@file:/absolute/path/test.puml- Absolute path
Error Handling
If a file cannot be read, you'll see an error message:
Error loading diagram file in docs/file-imports.md:
Failed to read file import: ENOENT: no such file or directory...Security Features
The plugin includes several security features:
- Dangerous Extension Blocking - Blocks
.exe,.sh,.bat,.php, etc. - Symlink Protection - Uses
realpathto prevent symlink attacks - Directory Restrictions - Optional
allowedImportDirsfor access control
Previous: Inline Diagrams - See traditional inline diagram examples