Markdown Rendering Simplified
Table of Contents
- Features
- Getting Started
- 1. Install Writr
- 2. Render from Markdown
- API
new Writr(options?: WritrOptions)
.engine
.options
.render(markdown: string, options?: RenderOptions): Promise<string>
.renderSync(markdown: string, options?: RenderOptions): string
- '.renderReact(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): Promise'
- '.renderReactSync(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): React.JSX.Element'
- Code of Conduct and Contributing
- License
Features
- Takes the complexity of Remark and makes it easy to use.
- Simpke to use and easy API
- Easily Render to
React
orHTML
. - Generates a Table of Contents for your markdown files (remark-toc).
- Slug generation for your markdown files (rehype-slug).
- Code Highlighting (rehype-highlight).
- Math Support (rehype-katex).
- Markdown to HTML (rehype-stringify).
- Github Flavor Markdown (remark-gfm).
- Emoji Support (remark-emoji).
- MDX Support (remark-mdx).
Getting Started
1. Install Writr
> npm install writr
2. Render from Markdown
import { Writr } from 'writr';
const writr = new Writr();
const markdown = `# Hello World ::-):\n\n This is a test.`;
const html = await writr.render(markdown); // <h1>Hello World 🙂</h1><p>This is a test.</p>
Its just that simple. Want to add some options? No problem.
import { Writr } from 'writr';
const writr = new Writr();
const markdown = `# Hello World ::-):\n\n This is a test.`;
const options = {
emoji: false
}
const html = await writr.render(markdown, options); // <h1>Hello World ::-):</h1><p>This is a test.</p>
Want to render to a translation? No problem.
import { Writr } from 'writr';
const writr = new Writr({ openai: 'your-api-key'});
const markdown = `# Hello World ::-):\n\n This is a test.`;
const langCode = 'es';
const html = await writr.renderTranslation(markdown, langCode, options); // <h1>Hola Mundo 🙂</h1><p>Esta es una prueba.</p>
How about generating keywords and descriptions for your front matter?
import { Writr } from 'writr';
const writr = new Writr({ openai: 'your-api-key'});
const markdown = `# Hello World ::-):\n\n This is a test.`;
const keywords = await writr.keywords(markdown); // ['Hello World', 'Test']
const description = await writr.description(markdown); // 'Hello World Test'
API
new Writr(options?: WritrOptions)
You can access the WritrOptions
from the instance of Writr. Here is an example of WritrOptions.
import { Writr, WritrOptions } from 'writr';
const writrOptions = {
openai: 'your-api-key', // openai api key (default: undefined)
renderOptions: {
emoji: true,
toc: true,
slug: true,
highlight: true,
gfm: true,
math: true,
mdx: true
}
};
const writr = new Writr(writrOptions);
.engine
Accessing the underlying engine for this instance of Writr. This is a Processor<Root, Root, Root, undefined, undefined>
fromt the unified .use()
function. You can use this to add additional plugins to the engine.
.options
Accessing the default options for this instance of Writr.
.render(markdown: string, options?: RenderOptions): Promise<string>
Rendering markdown to HTML. the options are based on RenderOptions. Which you can access from the Writr instance.
import { Writr, RenderOptions } from 'writr';
## `RenderOptions`
```js
interface RenderOptions {
emoji?: boolean; // emoji support
toc?: boolean; // table of contents generation
slug?: boolean; // slug generation
highlight?: boolean; // code highlighting
gfm?: boolean; // github flavor markdown
}
.renderSync(markdown: string, options?: RenderOptions): string
Rendering markdown to HTML synchronously. the options are based on RenderOptions. Which you can access from the Writr instance. The parameters are the same as the .render()
function.
import { Writr } from 'writr';
const writr = new Writr();
const markdown = `# Hello World ::-):\n\n This is a test.`;
const html = writr.renderSync(markdown); // <h1>Hello World 🙂</h1><p>This is a test.</p>
'.renderReact(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): Promise'
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from html-react-parser
.
import { Writr } from 'writr';
const writr = new Writr();
const markdown = `# Hello World ::-):\n\n This is a test.`;
const reactElement = await writr.renderReact(markdown); // Will return a React.JSX.Element
'.renderReactSync(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): React.JSX.Element'
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from html-react-parser
.
import { Writr } from 'writr';
const writr = new Writr();
const markdown = `# Hello World ::-):\n\n This is a test.`;
const reactElement = writr.renderReactSync(markdown); // Will return a React.JSX.Element
Code of Conduct and Contributing
Code of Conduct and Contributing guidelines.
License
MIT © Jared Wray
Latest's Releases
What's Changed
- upgrading vitest to 1.6.0 by @jaredwray in https://github.com/jaredwray/writr/pull/261
- upgrading typescript to 5.4.5 by @jaredwray in https://github.com/jaredwray/writr/pull/262
- upgrading rimraf to 5.0.7 by @jaredwray in https://github.com/jaredwray/writr/pull/263
- upgrading docula to 0.5.3 by @jaredwray in https://github.com/jaredwray/writr/pull/264
- upgrading react to 18.3.1 by @jaredwray in https://github.com/jaredwray/writr/pull/265
Full Changelog: https://github.com/jaredwray/writr/compare/v3.2.2...v3.2.3
What's Changed
- upgrading xo to 0.58.0 by @jaredwray in https://github.com/jaredwray/writr/pull/256
- upgrading typescript and webpack to latest by @jaredwray in https://github.com/jaredwray/writr/pull/257
- upgrading vitest to 1.4.0 by @jaredwray in https://github.com/jaredwray/writr/pull/258
- upgrading docula to 0.5.2 by @jaredwray in https://github.com/jaredwray/writr/pull/259
- upgrading html-react-parser to 5.1.10 by @jaredwray in https://github.com/jaredwray/writr/pull/260
Full Changelog: https://github.com/jaredwray/writr/compare/v3.2.1...v3.2.2
What's Changed
- updating vitest to latest by @jaredwray in https://github.com/jaredwray/writr/pull/254
- upgrading xo to 0.57.0 by @jaredwray in https://github.com/jaredwray/writr/pull/255
Full Changelog: https://github.com/jaredwray/writr/compare/v3.2.0...v3.2.1