fileHandler Plugin Type


A fileHandler plugin is used by the contentFolder plugin during the render process. The contentFolder plugin processes the folders for markdown files or other file type the folders may contain. The render processes any existing fileHandler plugin for any file extension type.


Scully comes with two built-in fileHandler plugins. The markdown plugin and the asciidoc plugin. These plugins handle and process the content of those file types as they are read from the file system.

If you want to support .docx files, or .csv files, or any other file type; a file handler for those file types need to be added. The contentFolder plugin takes care of reading those files from the filesystem. However, if the files need to be transformed after the contentFolder plugin reads them; A fileHandler plugin is required.


A fileHandler plugin is a function that returns a Promise<string>. The interface looks like follows:

function exampleFileHandlerPlugin(rawContent: string): Promise<string> {
  // Must return a promise

Making A fileHandler Plugin

The following fileHandler plugin example handles .cvs files by wrapping them into a code block. You could write a much more elaborate plugin that creates a table or a grid for the data.

function csvFilePlugin(raw) {
  return Promise.resolve(`<pre><code>${code}</code></pre>`);
registerPlugin('fileHandler', 'csv', { handler: csvFilePlugin });
module.exports.csvFilePlugin = csvFilePlugin;


Here are some links to built-in render plugins in Scully: