Stand with Ukraine 🇺🇦
Eleventy
The possum is Eleventy’s mascot

Eleventy Documentation

This is an older version of Eleventy. Go to the newest Eleventy docs (current path: /docs/programmatic/) or the full release history.
Menu

Programmatic API New in v1.0.0 #

Starting in Eleventy 1.0, you can run Eleventy in your own Node script. (This is how the Eleventy Serverless plugin works, behind the scenes)

Contents #

Examples #

Write to the file system #

Don’t forget to install Eleventy into your local project first!

Next create a file called my-node-script.js with the following contents:

Filename my-node-script.js
const Eleventy = require("@11ty/eleventy");

(async function() {
let elev = new Eleventy();
await elev.write();
})();

Then run your new script from the command line. Don’t include ~ $ when you run this command.

node my-node-script.js

Don’t write to the file system #

Using .write() will write your output to the file system. If, instead, you want to retrieve the content programmatically without writing, use .toJSON() or .toNDJSON().

JSON Output #

const Eleventy = require("@11ty/eleventy");

(async function() {
let elev = new Eleventy();
let json = await elev.toJSON();
// All results
console.log( json );
})();

ndjson Output #

const Eleventy = require("@11ty/eleventy");

(async function() {
let elev = new Eleventy();
let stream = await elev.toNDJSON();
stream.on("data", (entry) => {
// Stream one output result at a time
let json = JSON.parse(entry.toString());
console.log( json );
});
})();

Changing the Input and Output Directories #

The first argument is the input directory. The second argument is the output directory.

const Eleventy = require("@11ty/eleventy");

(async function() {
let elev = new Eleventy( ".", "_site" );

// Use `write` or `toJSON` or `toNDJSON`
})();

Full Options List #

The third argument to Eleventy is an options object.

const Eleventy = require("@11ty/eleventy");

(async function() {
let elev = new Eleventy( ".", "_site", {
// --quiet
quietMode: true,

// --config
configPath: ".eleventy.js",

config: function(eleventyConfig) {
// Do some custom Configuration API stuff
// Works great with eleventyConfig.addGlobalData
},
});

// Use `write` or `toJSON` or `toNDJSON`
})();

(More to come)


Other pages in Getting Started: