
Security News
npm ‘is’ Package Hijacked in Expanding Supply Chain Attack
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
babel-plugin-content-transformer
Advanced tools
A customizable babel plugin for loading all types of content files including markdown, frontmatter, yaml and toml
Easily transform YAML, TOML, and Markdown into normal JavaScript objects and convert directories of content into arrays at build time.
npm i -D babel-plugin-content-transformer
['content-transformer',
transformers: [
// Convert import statements ending with ".md" into strings
{
file: /\.md$/,
format: 'string'
}
],
content: [
// Import statements ending with "content" are converted into
// an array of imports. The array will only include ".md" files
{
dir: /content$/,
filter: /\.md$/
}
]
}]
Requires yaml to be installed.
// Matches ".yaml" and ".yml" imports and converts them to JS objects
['content-transformer', {
transformers: [{
file: /\.ya?ml$/,
format: 'yaml'
}]
}]
Requires toml to be installed.
['content-transformer', {
transformers: [{
file: /\.toml/,
format: 'toml'
}]
}]
This custom transformer will extract frontmatter from Markdown files and transform it into an object with the Markdown content in a "body" property.
// babel.config.js
const parse = require('remark-parse')
const stringify = require('remark-stringify')
const frontmatter = require('remark-frontmatter')
const extract = require('remark-extract-frontmatter')
const yaml = require('yaml')
module.exports = {
plugins: [
['content-transformer', {
transformers: [{
file: /\.md$/,
transform (contents, filename) {
const file = unified()
.use(parse)
.use(stringify)
.use(frontmatter)
.use(extract, { yaml: yaml.parse })
.processSync(contents)
const data = { ...file.data }
if (file.toString()) {
data.body = file.toString()
}
return data
}
}]
}]
]
}
All transformers need to have at minimum a "file" definition. This indicates which files should be transformed. Either a "transform" or "format" block can be provided, but not both. If both are omitted, the file is loaded as a string.
Name | Type | Description | Required | Default |
---|---|---|---|---|
file | RegExp | Which files to transform. An object with a "test" method like a RegExp. | true | |
transform | (contents: string, filename: string) => any | A custom transformation function. | false | |
format | string | One of 'yaml', 'toml', 'string' | false | 'string' |
Content blocks transform directories into arrays for easy consumption. Can be used together with transformers for easy content loading.
Name | Type | Description | Required | Default |
---|---|---|---|---|
dir | RegExp | Indicates which import statements should be treated as content directories. | true | |
filter | RegExp | Filters out files within matching directories | false | null |
FAQs
A customizable babel plugin for loading all types of content files including markdown, frontmatter, yaml and toml
The npm package babel-plugin-content-transformer receives a total of 485 weekly downloads. As such, babel-plugin-content-transformer popularity was classified as not popular.
We found that babel-plugin-content-transformer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
Security News
A critical flaw in the popular npm form-data package could allow HTTP parameter pollution, affecting millions of projects until patched versions are adopted.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.