remark-plugin-code-snippets

Remark plugin for sourcing code snippets from files

Usage no npm install needed!

<script type="module">
  import remarkPluginCodeSnippets from 'https://cdn.skypack.dev/remark-plugin-code-snippets';
</script>

README

remark-plugin-code-snippets

Remark plugin for creating sourcing code snippets from local files.

Installation

# npm
npm install remark-plugin-code-snippets

# yarn
yarn add remark-plugin-code-snippets

Options

Option Type Default Description
basePath string base path for sourcing files. If not defined, sources files relative to the file they're referenced from.
normalizeIndent bool true normalize snippets to smallest indentation level while keeping relative indentation intact

basePath

If specified, basePath should be relative to the project root; file paths are then sourced relative to basePath. If not specified, files paths are sourced relative to the file they're referenced from

trim

Leading and trailing lines of purely whitespace can be trimmed out based on how this option is configured.

normalizeIndent

Code snippets can have their indentation normalized in the code block while retaining relative indentation. This is particularly useful when sourcing only sections of a file.

Warning: may have unexpected behavior in the case of a mix of both tabs and spaces.

Syntax

Basic Usage

Source a file into a code block using file="path/to/file/from/basepath" in the metastring of the code block. Both single quotes and double quotes can be used, but they must match and one of them must be present.

# valid
```md file='README.md'
```

# also valid
```md file="README.md"
```

Embedding with other text

All instances of the string {{ FILE }} in the code block's contents are replaced by the file contents. This string must be on its own line, with nothing else but leading and/or trailing whitespace.

Sourcing parts of a file

Append :#-# to specify a range of lines to source from the file, rather than the entirety of the file. Leading zeros are not recognized. To source only a single line, omit the ending -#. To source from a line to the end of the file, omit the ending #.

```js file="index.js":2
```

```js file="index.js":2-3

{{ FILE:1 }}
{{ FILE }}
{{ FILE:4- }}
```

Inferring language

Use the require('remark-plugin-code-snippets).inferLanguage Remark plugin to be able to specify the file to be sourced in the node's language and infer the syntax highlighting for it based on the file extension.