remark-code-import
Starting from v1.0.0, the plugin is now ESM only. Node 12+ is needed to use it and it must be import
ed instead of require
d.
Installation
npm install -D remark-code-import
Setup
The plugin can be imported via named export, there's no default export.
import codeImport from 'remark-code-import';
See Using plugins for more instructions in the official documentation.
It can also be used in various of libraries: remark
: MDX, Gatsby gatsby-plugin-mdx
, Storybook docs.
Usage
Transform:
```js file=./say-hi.js
```
into:
```js file=./say-hi.js
console.log('Hello remark-code-import!');
```
The file path is relative to the markdown file path. You can use <rootDir>
at the start of the path to import files relatively from the rootDir
:
```js file=<rootDir>/file-under-root-directory.js
```
You may also specify lines or ranges:
Only line 3:
```js file=./say-hi.js#L3
```
Line 3 to line 6:
```js file=./say-hi.js#L3-L6
```
Line 3 to the end of the file
```js file=./say-hi.js#L3-
```
File paths with spaces should be escaped with \
:
```js file=./file\ with\ spaces.js
```
Options
-
async: boolean
: By default, this plugin usesreadFileSync
to read the contents of the files. Set this totrue
if you want to usereadFile
for non-blocking IO. -
rootDir: string
: Change what<rootDir>
refers to. Defaults toprocess.cwd()
. -
preserveTrailingNewline: boolean
: By default, this plugin will trim the trailing newline of the file when importing the code. You can preserve the trailing new line in the code block by setting this option totrue
. -
removeRedundantIndentations: boolean
: Set totrue
to remove redundant indentations for each line. For instance, the imported code of:
will become...First line Second line
First line Second line
-
allowImportingFromOutside: boolean
: For security reasons, by default this plugin doesn't allow importing files from outside the root directory (rootDir
). Set this option totrue
to bypass this limit.
Use as a Gatsby remark plugin
Use the /gatsby
endpoint. It's possible through to-gatsby-remark-plugin
.
{
resolve: 'remark-code-import/gatsby',
options: {}
}
Testing
After installing dependencies with npm install
, the tests can be run with: npm test
License
Kai Hao MIT