# metalsmith/metalsmith

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/metalsmith-metalsmith).**

7,827 stars · 609 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/metalsmith/metalsmith
- Homepage: https://metalsmith.io
- awesome-repositories: https://awesome-repositories.com/repository/metalsmith-metalsmith.md

## Topics

`javascript` `markdown` `markdown-to-html` `metalsmith` `nodejs` `ssg` `static-site-generator` `templates`

## Description

Metalsmith is a Node.js static site generator and static content processor that transforms source files into websites, eBooks, or technical documentation. It functions as a file-to-object transformer, converting directory trees into plain JavaScript objects that can be programmatically manipulated in memory.

The project is built around a pluggable build pipeline where files are passed through a sequence of custom functions to transform content and metadata incrementally. This architecture allows users to extend functionality by writing their own plugins or using third-party modules to define the processing chain.

The system covers broad capability areas including frontmatter metadata management, project scaffolding from templates, and automated build workflows. It provides tools for managing file structures, optimizing assets, and integrating external data, alongside a command line interface for managing builds via JSON configuration.

## Tags

### Content Management & Publishing

- [Static Content Processors](https://awesome-repositories.com/f/content-management-publishing/static-content-processors.md) — Produce static sites, project scaffolds, or eBooks by passing files through a standardized processing pipeline. ([source](https://metalsmith.io/))
- [Static Documentation Generators](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/content-architecture-modeling/documentation-tooling/generation-publishing/static-documentation-generators.md) — Convert Markdown to HTML, build navigation trees, and render pages with templates. ([source](https://metalsmith.io/))
- [Front Matter Parsers](https://awesome-repositories.com/f/content-management-publishing/content-processing-transformation/content-processing/front-matter-parsers.md) — Extracts YAML or JSON metadata from the top of source files to attach structured data to file objects. ([source](https://metalsmith.io/api/))
- [Frontmatter Serializers](https://awesome-repositories.com/f/content-management-publishing/content-processing-transformation/content-processing/front-matter-parsers/frontmatter-serializers.md) — Converts a file object and its metadata back into a string with a header. ([source](https://metalsmith.io/api/))
- [File Metadata Manipulation](https://awesome-repositories.com/f/content-management-publishing/file-metadata-manipulation.md) — Provides mechanisms to load and transform metadata from frontmatter, JSON, YAML, or environment variables. ([source](https://metalsmith.io/plugins))
- [Global Site Metadata](https://awesome-repositories.com/f/content-management-publishing/global-site-metadata.md) — Provides a shared global metadata store accessible to all plugins during the build. ([source](https://metalsmith.io/api))
- [Static Site Generators](https://awesome-repositories.com/f/content-management-publishing/static-site-document-generators/static-site-generators.md) — Transforms source files and templates into optimized static HTML documents for web deployment. ([source](https://metalsmith.io/docs))
- [Static Site Generators](https://awesome-repositories.com/f/content-management-publishing/static-site-generators.md) — Transforms source files and templates into a complete set of static HTML pages via a plugin pipeline. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Static Websites](https://awesome-repositories.com/f/content-management-publishing/static-websites.md) — Generates websites consisting of pre-rendered HTML, CSS, and JavaScript files served without a dynamic backend. ([source](https://metalsmith.io/))
- [Virtual File System Manipulations](https://awesome-repositories.com/f/content-management-publishing/virtual-file-system-manipulations.md) — Enables renaming, moving, and removing files by manipulating the in-memory file object representation. ([source](https://metalsmith.io/plugins))
- [Ebook Compilation](https://awesome-repositories.com/f/content-management-publishing/ebook-compilation.md) — Converts Markdown chapter files into multiple ebook formats including PDF, ePUB, and MOBI. ([source](https://metalsmith.io/))
- [eBook Compilers](https://awesome-repositories.com/f/content-management-publishing/ebook-compilers.md) — Assembles markdown chapter files into multiple eBook formats including PDF, ePUB, and MOBI.
- [Markdown to HTML Converters](https://awesome-repositories.com/f/content-management-publishing/markdown-to-html-converters.md) — Transforms Markdown source files into structured HTML for web display. ([source](https://metalsmith.io/plugins))

### Software Engineering & Architecture

- [In-Memory File Object Representations](https://awesome-repositories.com/f/software-engineering-architecture/in-memory-file-object-representations.md) — Converts directory trees into plain JavaScript objects to allow programmatic manipulation of content and metadata in memory.
- [Transformation Plugins](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/developer-authoring-interfaces/custom-module-implementations/module-functionality-extenders/plugin-extenders/transformation-plugins.md) — Employs a pluggable pipeline architecture where custom functions manipulate content and metadata. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Transformation Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/third-party-plugins/transformation-pipelines.md) — Implements a pluggable build pipeline that passes file objects through a sequence of custom transformation functions.
- [General Purpose Processing Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/pipeline-plugins/markdown-plugin-pipelines/general-purpose-processing-pipelines.md) — Implements a linear plugin pipeline that passes file objects through a sequence of functions to transform data incrementally. ([source](https://metalsmith.io/))
- [Virtual File System Representations](https://awesome-repositories.com/f/software-engineering-architecture/virtual-file-system-representations.md) — Transforms entire directory trees into plain JavaScript objects, enabling programmatic manipulation of content and metadata in memory. ([source](https://metalsmith.io/))
- [Shared Build State](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/app-bootstrap-and-identity/application-information/application-metadata/build-and-version-metadata/shared-build-state.md) — Maintains a shared metadata object that can be accessed and modified by all plugins to coordinate data across the site. ([source](https://metalsmith.io/docs/writing-plugins/))
- [Pipeline Plugins](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/pipeline-plugins.md) — Utilizes modular plugins that define sequential stages in a data processing pipeline for incremental transformations.
- [Source Directory Configuration](https://awesome-repositories.com/f/software-engineering-architecture/source-file-organization/source-root-configurators/source-directory-configuration.md) — Enables users to specify the folder containing the source files to be processed. ([source](https://metalsmith.io/api))
- [Environment Variable Managers](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/environment-variable-management/environment-variable-managers.md) — Manages case-insensitive environment variables to control build behavior across different environments. ([source](https://metalsmith.io/api))
- [Environment Variables](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/environment-variable-management/environment-variables.md) — Implements key-value pair storage for environment variables that influence plugin behavior. ([source](https://metalsmith.io/api/))
- [Build Artifact Management](https://awesome-repositories.com/f/software-engineering-architecture/build-artifact-management.md) — Clears the destination directory before writing new build results. ([source](https://metalsmith.io/api))
- [Concurrent Task Limiters](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-runners/concurrent-task-limiters.md) — Restricts the number of simultaneous open files to prevent system resource exhaustion during the build. ([source](https://metalsmith.io/api))
- [Plugin Configurations](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/plugin-configurations.md) — Allows wrapping plugin bodies in initializer functions to validate and set default configuration options. ([source](https://metalsmith.io/docs/writing-plugins/))
- [Pluggable Module Loading](https://awesome-repositories.com/f/software-engineering-architecture/pluggable-module-loading.md) — Supports dynamic import of JavaScript, JSON, or ESM modules relative to the project directory. ([source](https://metalsmith.io/api/))

### Data & Databases

- [File](https://awesome-repositories.com/f/data-databases/collection-iterators/file.md) — Enables iterating over the internal file collection to apply transformations to specific subsets of content. ([source](https://metalsmith.io/docs/writing-plugins/))
- [Frontmatter Management](https://awesome-repositories.com/f/data-databases/file-storage-and-metadata-management/frontmatter-management.md) — Provides tools for programmatically reading and modifying YAML or JSON frontmatter embedded in source files.
- [Front-Matter Indexing](https://awesome-repositories.com/f/data-databases/metadata-indexing/front-matter-indexing.md) — Extracts YAML front-matter from source files to attach structured metadata to the internal file objects. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Object Transformation](https://awesome-repositories.com/f/data-databases/ordered-data-structures/ordered-collection-literals/object-collection-processors/object-transformation.md) — Converts source directories into JavaScript objects to allow plugins to manipulate the site structure programmatically. ([source](https://metalsmith.io/))
- [Structured Return Objects](https://awesome-repositories.com/f/data-databases/data-structures/structured-return-objects.md) — Runs a plugin stack on source files and returns the final output as a structured JavaScript data object. ([source](https://metalsmith.io/api/))
- [Asynchronous File Operations](https://awesome-repositories.com/f/data-databases/file-management-systems/asynchronous-file-operations.md) — Supports running asynchronous tasks inside plugins and coordinating parallel operations. ([source](https://metalsmith.io/docs/writing-plugins/))
- [Frontmatter Serialization](https://awesome-repositories.com/f/data-databases/file-storage-and-metadata-management/frontmatter-management/frontmatter-serialization.md) — Converts file objects and their metadata back into strings with frontmatter delimiters for output. ([source](https://metalsmith.io/api/))
- [Shared Memory Configuration Stores](https://awesome-repositories.com/f/data-databases/shared-memory-transports/shared-memory-configuration-stores.md) — Maintains a globally accessible memory space for synchronizing site-wide configuration and shared variables across all plugins.

### Development Tools & Productivity

- [Build Pipeline Plugins](https://awesome-repositories.com/f/development-tools-productivity/build-pipeline-plugins.md) — Accepts user-written functions or local modules to manipulate files during the build pipeline. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Build Output Writing](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems/static-site-generators/build-output-writing.md) — Runs source files through a plugin stack and outputs the final results into a target folder. ([source](https://metalsmith.io/api))
- [Build Configurations](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-configuration-systems/build-configurations.md) — Uses JSON configuration files to define sources, destinations, and plugin sequences for the build process. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Output Directory Configuration](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-configuration-systems/build-configurations/output-directory-configuration.md) — Provides configuration options to set the target folder for processed files. ([source](https://metalsmith.io/api))
- [CLI Command Frameworks](https://awesome-repositories.com/f/development-tools-productivity/cli-command-frameworks.md) — Ships a CLI for managing the entire build lifecycle, including initialization and output cleaning. ([source](https://metalsmith.io/docs))
- [CLI Configurations](https://awesome-repositories.com/f/development-tools-productivity/cli-configurations.md) — Supports project configuration via JSON files to define build paths and plugin settings. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Static Site Documentation](https://awesome-repositories.com/f/development-tools-productivity/documentation-generators/static-site-documentation.md) — Transforms markdown files into structured technical documentation with navigation and templated HTML output.
- [In-Memory File Object Manipulations](https://awesome-repositories.com/f/development-tools-productivity/in-memory-file-object-manipulations.md) — Provides the ability to create, rename, and delete files by manipulating a plain JavaScript object representing the site structure. ([source](https://metalsmith.io/docs/writing-plugins/))
- [Pluggable Build Pipelines](https://awesome-repositories.com/f/development-tools-productivity/pluggable-build-pipelines.md) — Utilizes a sequence of custom functions to incrementally manipulate file objects and metadata.
- [Transformation Plugin Development](https://awesome-repositories.com/f/development-tools-productivity/plugin-systems/custom-plugin-registrations/transformation-plugin-development.md) — Passes source files through a chain of transformation plugins to write processed results to a destination directory. ([source](https://cdn.jsdelivr.net/gh/metalsmith/metalsmith@master/README.md))
- [Build Path Mapping](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/build-configuration/build-output-configurations/build-path-mapping.md) — Allows precise control over the working directory and the source/destination folders. ([source](https://metalsmith.io/api))
- [Static Content Transformations](https://awesome-repositories.com/f/development-tools-productivity/source-builds/static-content-transformations.md) — Transforms source files through a sequence of plugins to write finished content to a destination directory. ([source](https://metalsmith.io/api/))
- [Build Automation](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-tools/build-task-automation/build-automation.md) — Implements automated build workflows including change-triggered rebuilds and performance measurement. ([source](https://metalsmith.io/plugins))
- [File-Based Build Operations](https://awesome-repositories.com/f/development-tools-productivity/build-environment-configurators/build-environment-shells/build-phase-automation/custom-build-rules/file-based-build-operations.md) — Allows users to create custom build tools by sequencing operations on a file-based abstraction. ([source](https://metalsmith.io/))
- [Build Output Directories](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-configuration-systems/build-output-directories.md) — Allows configuration of the input source directory and the final output destination folder. ([source](https://metalsmith.io/api/))
- [File Ignore Patterns](https://awesome-repositories.com/f/development-tools-productivity/file-ignore-patterns.md) — Supports excluding specific files or directories from the build output using glob patterns. ([source](https://metalsmith.io/api/))
- [File Pattern Matching](https://awesome-repositories.com/f/development-tools-productivity/file-pattern-matching.md) — Allows selecting specific source files or excluding directories using wildcard glob patterns. ([source](https://metalsmith.io/api))
- [Glob-Based File Location](https://awesome-repositories.com/f/development-tools-productivity/file-pattern-matching/name-pattern-filters/glob-based-file-location.md) — Allows excluding files or directories from the build using glob-based pattern matching. ([source](https://metalsmith.io/api/))
- [Glob Pattern Selectors](https://awesome-repositories.com/f/development-tools-productivity/file-pattern-matching/regex-based-file-selection/glob-pattern-selectors.md) — Uses wildcard glob patterns to select or exclude specific source files and directories from the build scope.
- [In-Memory Build Processing](https://awesome-repositories.com/f/development-tools-productivity/in-memory-build-processing.md) — Executes a plugin stack on files in memory to generate a result without saving data to the physical disk. ([source](https://metalsmith.io/api))
- [Watch Modes](https://awesome-repositories.com/f/development-tools-productivity/javascript-and-typescript-build-systems/watch-modes.md) — Implements a watch mode that monitors filesystem changes to trigger automatic rebuilds of the project. ([source](https://metalsmith.io/api))
- [Project Scaffolding](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-scaffolding.md) — Includes a utility to generate new project directory structures by filling template files with user values.
- [Project Scaffolding Templates](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-templates.md) — Provides the ability to generate new project directory structures from template files with customizable placeholders. ([source](https://metalsmith.io/))
- [Project Scaffolding Tools](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-tools.md) — Ships a utility to bootstrap new project directory structures using template-driven scaffolding.
- [Source-to-HTML Converters](https://awesome-repositories.com/f/development-tools-productivity/source-build-tools/build-time-source-transformations/source-to-html-converters.md) — Converts input formats such as Pug, AsciiDoc, or Textile into HTML for web presentation. ([source](https://metalsmith.io/plugins))
- [Static Asset Distributions](https://awesome-repositories.com/f/development-tools-productivity/static-asset-distributions.md) — Moves specified files or directories directly to the destination folder without running them through plugins. ([source](https://metalsmith.io/api))
- [Source File Watching](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-tools/development-automation/development-rebuild-triggers/source-file-watching.md) — Monitors source files for changes to trigger automatic recompilation and rebuilds during development. ([source](https://metalsmith.io/api/))

### DevOps & Infrastructure

- [CLI Build Executors](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/cicd-pipeline-management/build-pipelines/cli-build-executors.md) — Provides a command-line interface to execute site generation, project initialization, and cleanup tasks. ([source](https://metalsmith.io/docs))
- [Build Configuration](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/configuration-lifecycle-management/build-configuration.md) — Allows build pipelines to be defined both programmatically via API and declaratively via JSON. ([source](https://metalsmith.io/))

### Web Development

- [Static Content Processors](https://awesome-repositories.com/f/web-development/api-management-tools/static-content-processors.md) — Processes source files through transformations to generate diverse static outputs like websites, eBooks, and technical documentation. ([source](https://metalsmith.io/))
- [Static Site Generators](https://awesome-repositories.com/f/web-development/static-site-generators.md) — Functions as a Node.js-based static site generator that transforms source files into web assets via a processing pipeline.

### Part of an Awesome List

- [File Collection Builders](https://awesome-repositories.com/f/awesome-lists/devtools/file-and-directory-management/file-collection-builders.md) — Groups files into collections to automatically generate indexes and sequential navigation links. ([source](https://metalsmith.io/plugins))

### Operating Systems & Systems Programming

- [Path Manipulations](https://awesome-repositories.com/f/operating-systems-systems-programming/file-i-o-management/path-manipulations.md) — Provides utilities to read and write file paths using OS-specific separators and normalized patterns. ([source](https://metalsmith.io/docs/writing-plugins/))

### Programming Languages & Runtimes

- [Asynchronous Flow Coordination](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-flow-coordination.md) — Implements patterns for managing the synchronization and resolution of concurrent asynchronous plugin operations during the build.

### User Interface & Experience

- [Page Layout Templates](https://awesome-repositories.com/f/user-interface-experience/page-layout-templates.md) — Wraps source content in templates using engines like Handlebars, Twig, or React for consistent page structure. ([source](https://metalsmith.io/plugins))
