npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

remark-kroki

v0.3.7

Published

Remark plugin for showing Kroki diagram

Downloads

4,101

Readme

remark-kroki

Remark plugin for showing Kroki diagram.

npm github node

Installation

npm install remark-kroki --save-dev

Usage

import readFileSync from 'node:fs';

import { remark } from 'remark';
import { remarkKroki } from 'remark-kroki';

const markdownText = readFileSync('example.md', 'utf8');

remark()
  .use(remarkKroki, {
    server: 'http://localhost:8000',
    alias: ['plantuml']
  })
  .process(markdownText)
  .then((file) => console.info(file))
  .catch((error) => console.warn(error));

Docusaurus v3 project

// docusaurus.config.mjs
import { remarkKroki } from 'remark-kroki';

export default {
  presets: [
    [
      'classic',
      {
        docs: {
          remarkPlugins: [
            [
              remarkKroki,
              {
                // ...options here
                alias: ['plantuml'],
                target: 'mdx3'
              }
            ]
          ]
        }
      }
    ]
  ]
};

Docusaurus v2 project

// docusaurus.config.js
module.exports = async function createConfig() {
  const { remarkKroki } = await import('remark-kroki');

  return {
    presets: [
      [
        'classic',
        {
          docs: {
            remarkPlugins: [
              [
                remarkKroki,
                {
                  // ...options here
                  alias: ['plantuml']
                }
              ]
            ]
          }
        }
      ]
    ]
  };
};

Options

Options.server

Using self host server by default. Set https://kroki.io to use free service.

Options.headers

  • type: object
  • default: {}

HTTP headers to send to the server for custom authentication.

Options.alias

  • type: array
  • default: []
  • example: ['plantuml']

Alias code language name to treat as kroki code block, meta.type will be ignored.

```kroki type=plantuml
```
↓

```plantuml
```

Options.target

  • type: string
  • default: 'html'
  • enum: ['html', 'mdx3']

Transform HTML tags as MDX 3.0 AST or not. When you using Docusaurus v3, you should use mdx3.

Options.output

  • type: string
  • default: 'img-base64'
  • enum: ['inline-svg', 'img-base64', 'img-html-base64', 'object-base64']

How to embed SVG as image. See the different and risk on Best Way To Embed SVG.

Syntax

Base

Turn

```kroki type=plantuml
  A --> B
```

Into

![plantuml](data:image/svg+xml;base64,xxxxxxxx)
Turn

```kroki type=plantuml alt=abc
  A --> B
```

Into

![abc](data:image/svg+xml;base64,xxxxxxxx)

Set classnames

<!--  when Options.output == 'img-html-base64' -->

Turn

```d2 classnames="tw-w-1/2"
A --> B
```

Into

<img classnames="tw-w-1/2" src="data:image/svg+xml;base64,xxxxxxxx" />

Troubleshooting

When you using inline-svg with mdx3 mode, You may get following error:

Error: Cannot handle unknown node `raw` when using with `@mdx-js/mdx`

You need to add rehype-raw to the complier, for example:

// docusaurus.config.mjs
import rehypeRaw from 'rehype-raw';
import { remarkKroki } from 'remark-kroki';

export default {
  presets: [
    [
      'classic',
      {
        docs: {
          remarkPlugins: [
            [
              remarkKroki,
              {
                // ...options here
                target: 'mdx3',
                output: 'inline-svg'
              }
            ]
          ],
          rehypePlugins: [
            [
              rehypeRaw,
              {
                passThrough: [
                  'mdxFlowExpression',
                  'mdxJsxFlowElement',
                  'mdxJsxTextElement',
                  'mdxTextExpression',
                  'mdxjsEsm'
                ]
              }
            ]
          ]
        }
      }
    ]
  ]
};

Related