Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/x-govuk/govuk-markdown

Convert Markdown into GOV.UK Frontend-compliant HTML.
https://github.com/x-govuk/govuk-markdown

design-system govuk markdown marked

Last synced: 3 months ago
JSON representation

Convert Markdown into GOV.UK Frontend-compliant HTML.

Awesome Lists containing this project

README

        

# GOV.UK Markdown · [![test](https://github.com/x-govuk/govuk-markdown/actions/workflows/test.yml/badge.svg)](https://github.com/x-govuk/govuk-markdown/actions/workflows/test.yml)

Convert Markdown into [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend)-compliant HTML. It’s an extension to the [marked](https://marked.js.org) renderer and is inspired by its Ruby equivalent gem [`govuk_markdown`](https://github.com/DFE-Digital/govuk_markdown).

Don’t confuse this package with [govspeak](https://github.com/alphagov/govspeak), which is a Markdown dialect specifically built for the GOV.UK publishing system.

## Requirements

Node.js v18 or later.

## Installation

`npm install govuk-markdown --save`

## Usage

```js
const { marked } = require('marked')
const govukMarkdown = require('govuk-markdown')

marked.use(govukMarkdown())
```

If you are using [ES modules](https://nodejs.org/api/esm.html#introduction), import as follows:

```js
import { marked } from 'marked'
import govukMarkdown from 'govuk-markdown'

marked.use(govukMarkdown())
```

When you call `marked`, the generated HTML will include the classes from GOV.UK Frontend. For example:

```js
marked('[A link](/foo)')
```

Will output:

```html


A link


```

### Code highlighting

Block code is highlighted using [highlight.js](https://highlightjs.org). For example:

````js
marked("```js\nconsole.log('Hello, World!')\n```")
````

Will output:

```html



console.log('Hello, World!')


```

### Additional styles

To enable the styling for inline code, block code and checkboxes in task lists, add the following to your Sass file:

```scss
@import "govuk-markdown/x-govuk/all";
```

## Options

In addition to [marked’s options](https://marked.js.org/using_advanced#options), this extension accepts additional values:

| Name | Type | Description |
| ------------------- | -------- | ---------------------------------------------------------------------------- |
| `headingsStartWith` | `string` | Heading size to use for the top-level heading (`xl` or `l`). Default is `l`. |

For example:

```js
const { marked } = require('marked')
const { govukMarkdown } = require('govuk-markdown')

marked.use(govukMarkdown({
headingsStartWith: 'xl'
}))

marked('# Extra large heading')
```

Will output:

```html

Extra large heading


```

## Testing

`npm test`

## Releasing a new version

`npm run release`

This command will ask you what version you want to use. It will then publish a new version on NPM, create and push a new git tag and then generate release notes ready for posting on GitHub.

> [!NOTE]
> Releasing a new version requires permission to publish packages to the `@x-govuk` organisation.