Skip to content

Releases: 11ty/eleventy

Eleventy v1.0.0: First!

10 Jan 01:51
Compare
Choose a tag to compare

Eleventy v1.0.0 🎈🐀⚡️

This project would not be possible without our lovely community. Thank you to everyone that built something with Eleventy (×476 authors on our web site!), wrote a blog post about Eleventy, contributed code to core or plugins, documentation, asked questions, answered questions, braved The Leaderboards, participated on Discord, filed issues, attended (or organized!) a meetup, said a kind word on Twitter ❤️.

I really wish I had time to list everyone, but I do want to mention a few folks that have made tremendous contributions:

Install or Upgrade

  • Install to your local project: npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Read more about local project versus global installation

Upgrading from 0.x? Try out the eleventy-upgrade-help plugin.

This will log breaking changes that apply to your project. https://github.com/11ty/eleventy-upgrade-help

Breaking Changes

  • Changes Node requirement to 12+ (previously: 10+)
  • Data Deep Merge is now enabled by default
  • The ordering in the Data Cascade changed slightly: Front Matter in Layout files moved to be lower precedence, below Template and Data Directory Files (but higher than Global Data).
  • liquidjs v9 major version upgrade changes:
    • setLiquidOptions: Eleventy default for dynamicPartials changed to true. Issue #240 Unquoted include paths will need to be updated or revert using dynamicPartials: false
    • setLiquidOptions: Liquid option strict_filters renamed to strictFilters. Issue #1390
    • setLiquidOptions: Eleventy default for strict_filters/strictFilters changed to true. Issue #222
    • Relative path includes (e.g. {% include "./include.liquid" %}) now look relative to the file first, and the includes directory second. Issue #2090
  • ejs v3 major version upgrade changes: Issue #1392
    • Removes <% include /included %> style include, use <%- include('/included') -%> instead. Don’t forget the dash <%- and -%>!
  • .gitignore files outside of your project root are no longer supported when calculating ignored paths in Eleventy. Issue #364
    • ✅ {ROOT}/.gitignore (supported)
    • 🚫 {INPUT_DIR}/.gitignore (not supported)
    • ✅ {ROOT}/.eleventyignore (supported)
    • ✅ {INPUT_DIR}/.eleventyignore (supported)
  • If you rely on the YYYY-MM-DD format in your file names for content dates, these are now assumed to be UTC instead of local dates. Take care if you use liquid’s built-in date format with page.date!
  • browser-sync:
  • Removes the jstl template language. Use 11ty.js instead. Issue #1084
  • Change to dataTemplateEngine: false by default. Issue #174

Please use eleventy-upgrade-help to log breaking changes that apply to your project.

Features

Major

Minor

  • Passthrough Copy now throws an error if two or more files attempt to copy to the same output location. Issue #1677
  • For better URL-safe slugs by default, we now suggest using the new slugify global filter instead of the previous slug. slug is still included for backwards compatiblity. slugify Docs. eleventy-upgrade-help includes a permalink checker to compare slug and slugify output. Issue #278
  • Added support for protocol relative URLs in the url global filter (though technically accurate, using this method is discouraged). Issue #1276
  • New Eleventy supplied data:
  • tags are now de-duped. Issue #1876
  • JavaScript functions in eleventyComputed now have access to global filters.
  • Ignores
  • Configuration: Access to eleventyConfig.dir in plugins. Issue #922
  • Configuration: Events are now Async-friendly
  • Replace chalk dependency with kleur Issue #2113
  • Adds template language-agnostic compilation caching for speeeeed Issue #1529
  • Fixes bug --input=file.njk --output=. would process 0 files. Issue #1129
  • Fixes bug where Eleventy would stop processing templates in watch/serve mode after a compilation error. Issue #1658
  • Front matter parsing errors will now report the filename of the offending file in the error message. Issue #1152
  • Option to opt-out of the browser-sync JavaScript snippet
  • Warning when Transforms that return empty content. Issue #1487
  • Transforms now have access to inputPath Issue #789
  • Shows the preprocessed template engine name on the console for html or md files Issue #1478

Nunjucks

  • Adds eleventyConfig.setNunjucksEnvironmentOptions method. Issue #895
  • Adds eleventyConfig.addNunjucksGlobal method. Issue #1060

Liquid

  • Adds support for asynchronous filters. Issue #831

Milestone

All bug fix issues can be perused at the GitHub milestone:
https://github.com/11ty/eleventy/milestone/32?closed=1

Some internals highlights:

  • Improvements to stability with Nunjucks and shortcodes in {% for %} loops
  • Fix for EMFILE: too many open files errors
  • Use a named browser-sync instance. Issue #1125
  • Switch from fs-extra to graceful-fs

Major Version Dependency Upgrades

These are convenience links provided. Major things of note are summarized in the Breaking Changes section above.

  • liquidjs fro...
Read more

Eleventy v0.12.1

19 Mar 21:47
Compare
Choose a tag to compare

v0.12.1 Documentation

Install or Upgrade

  • Install to your local project: npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Read more about local project versus global installation

How can you support Eleventy?

Thank you to everyone that contributed code, documentation, answered questions, filed issues, said a kind word on Twitter ❤️

The TL;DR List

Fix for error messaging when attempting to use Node 8

As of Eleventy v0.12.0, Node 10 is now required. Node 8 is end of life (EOL) and no longer supported by Node. There was a small bug in the 0.12.0 release that would not show friendly error messaging when attempting to use Node 8 with Eleventy. That has been fixed.

Administration

Eleventy v0.12.0

19 Mar 21:44
Compare
Choose a tag to compare

v0.12.0 Documentation

Install or Upgrade

  • Install to your local project: npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Read more about local project versus global installation

How can you support Eleventy?

Thank you to everyone that contributed code, documentation, answered questions, filed issues, said a kind word on Twitter ❤️

The TL;DR List

Node version support bumped from 8 to 10+

Node 8 is end of life (EOL) and no longer supported by Node.

Dependency Major Release Bumps

pug 2.0.4 to 3.0.2

chalk 3.0.0 to 4.1.0

fs-extra 8.1.0 to 9.1.0

Administration

Eleventy v0.11.1

22 Oct 19:27
Compare
Choose a tag to compare

v0.11.1 Documentation

Install or Upgrade

  • Install to your local project: npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Read more about local project versus global installation

How can you support Eleventy?

Thank you to everyone that contributed code, documentation, answered questions, filed issues, said a kind word on Twitter ❤️

The TL;DR List

New Build Events

Administration

Eleventy v0.11.0: The Eponymous Release

11 May 15:05
Compare
Choose a tag to compare

v0.11.0 Documentation

Install or Upgrade

  • Install to your local project: npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Read more about local project versus global installation

How can you support Eleventy?

Thank you to everyone that contributed code, documentation, answered questions, filed issues, said a kind word on Twitter ❤️

The TL;DR List

Computed Data

Computed Data is a mechanism to transform the data at the end of the data cascade, before template rendering.

Incremental Builds

  • Incremental support for --incremental is ongoing. Follow along at https://github.com/orgs/11ty/projects/3
  • This version supports incremental passthrough copy. Changing a passthrough copy file during --watch or --serve only copies the changed file and does not trigger a full build. #977

Shortcodes

  • In shortcodes you can now access page variable data under this.page without needing to pass in as an argument (works with Nunjucks, Liquid, 11ty.js JavaScript, Handlebars) #741

The Road to ESM

New Filters

The Nitty Gritty List™

  • Adds .npmignore to streamline npm payload—thanks @pdehaan! #951 #962
  • Adds additional performance-related debug messages to help developers analyze and improve performance of builds: https://www.11ty.dev/docs/debug-performance/ #1078
  • Make the priority of different file extensions explicit in Global Data—thanks @gloryofrobots! #794 #821
  • Now parses a directory data file in the top level input directory. #935 #993
  • Support for cooldown period between builds during watch/serve. Adds Configuration API method setWatchThrottleWaitTime to set (in milliseconds). Useful if you use a Save All feature in your editor that saves multiple files at the same time. #559 Related to #977 Docs forthcoming: #1003
  • Adds beforeWatch build event (runs before a re-build during watch or serve, not the initial build) #1042
  • To discourage huge passthrough copy in the build, we now show the number of files copied in console log output #1077
  • Markdown templates (and thus markdown-it plugins) can receive and use data—thanks @blacksquaresa! #643
  • Throw an error if an 11ty.js JavaScript template doesn’t return anything! Thanks @ithinkihaveacat #1013 #1012
  • Retrieve a reference to existing Eleventy provided filters in with Configuration API method getFilter, docs pending #284

Bug fixes

  • Fail silently on empty/null dates in front matter—thanks @DirtyF @dceddia! #850 #786
  • Copy improvements in comments/code style cleanup—thanks @samuelpath! #960 #970 #968 #992 #991 #987
  • Fix for errors being swallowed in the Error Handler 😭, reporting as Cannot read property 'trim' of undefined
  • A ton of bug fixes for renderData (details above in the Computed Data section)
  • npm audit: #1023 #1026 #1025

Administration

Dependency Major Release Bumps

Eleventy 🕚⚡️ v0.10.0: New year new me

07 Jan 21:53
Compare
Choose a tag to compare

A special note of remembrance

Before we get going here I just want to take a brief moment to remember the very special @jameswillweb who passed away earlier this month. James was diagnosed with ALS in 2013 and was known for his widespread teaching contributions to the web community. Probably the least of which, but one that I will always remember, was his creation of the floating possum mascot for our little Eleventy project. This mascot (nay, mastcot, because it lives in the masthead ok fine but James would have liked that one) lives at the top of the Eleventy docs and links to the Twitter thread he started in 2018. Though we never met in real life, James was clearly a one-of-a-kind. We will miss you ❤️

Donations may be made in James’ name to The ALS Therapy Development Institute or to Quest Youth Ministries at St. John's United Methodist Church.

Permalink: https://www.11ty.dev/news/james-williamson/

v0.10.0 Documentation

Installation

  • Install to your Local project (preferred): npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Want to install globally? npm install -g @11ty/eleventy
  • Already installed globally? Upgrade your Global version: npm update -g @11ty/eleventy
  • Read more about local versus global installation

How can you support Eleventy?

Thank you to the code contributors that helped with this release: @gloryofrobots @edbrannin @MadeByMike @Ryuno-Ki @cschuller @micahmills @fredrikekelund @ahl @Munter @saenglert (and @zachleat, I guess)

Features

Official Plugins

Configuration API

  • Support for arbitrary data file formats in the Data Cascade. e.g. eleventyConfig.addDataExtension("yaml", contents => yaml.safeLoad(contents)); Thank you @gloryofrobots! #736 #798 #635 #630 #624 #265
    • ⚠️ Documentation pending
  • Adds setQuietMode method to Configuration API so that we don’t have to type --quiet all the time. #808
  • Adds addWatchTarget method to Configuration API for programmatic watching of arbitrary files. Thanks @MadeByMike! #803 #641
  • Show pathPrefix being used in standard console output (if non-default). #807
  • Adds getFilteredByTags to Collection API #708 #711 #830

Pagination

Performance

Shortcodes

Miscellanous

Documentation Web Site

Bug fixes

  • Improved error reporting in shortcode code. #681
  • Issue with Cannot read property 'trim' of undefined error on unhandledRejection events. #689
  • Fix for require node cache busting on Windows (some JavaScript files may not have picked up changes when watching) #341 #596 #683 Thanks @cschuller!
  • Fix bug with negated entries (!) in .gitignore or .eleventyignore files. The bug caused Eleventy to not process any files. Support was not added for negated entries—they are ignored for now. Thanks @micahmills! #677 #709
  • Fix to Sortable implementation, improved tests—thanks @edbrannin! #747
  • Fix small variable scoping issue in TemplateWriter—thanks @fredrikekelund! #724 #722
  • Fix data bleed issue in the Data Cascade with front matter and setDataDeepMerge. Thanks @ahl! #676 #735
  • Improved test coverage for EleventyErrorUtil—thank you @edbrannin! #753

Administration

Dependency Major Release Bumps

🚧🚧 Eleventy 🕚⚡️ v0.10.0 Beta 2 🚧🚧

04 Jan 20:06
Compare
Choose a tag to compare

Eleventy is a Simpler Static Site Generator.

A special note of remembrance

Before we get going here I just want to take a brief moment to remember the very special @jameswillweb who passed away earlier this month. James was diagnosed with ALS in 2013 and was known for his widespread teaching contributions to the web community. Probably the least of which, but one that I will always remember, was his creation of the floating possum mascot for our little Eleventy project. This mascot (nay, mastcot, because it lives in the masthead ok fine but James would have liked that one) lives at the top of the Eleventy docs and links to the Twitter thread he started in 2018. Though we never met in real life, James was clearly a one-of-a-kind. We will miss you ❤️

Donations may be made in James’ name to The ALS Therapy Development Institute or to Quest Youth Ministries at St. John's United Methodist Church.

Permalink: https://www.11ty.dev/news/james-williamson/

Installation

Install this 🚧🚧 prerelease 🚧🚧 to help test the upcoming Eleventy 0.10.0 release:

npm install @11ty/eleventy@beta --save-dev

Thank you to the code contributors that helped with this release!

@gloryofrobots @edbrannin @MadeByMike @Ryuno-Ki @cschuller @micahmills @fredrikekelund @ahl @Munter @saenglert (and @zachleat, I guess)

Features

Official Plugins

Configuration API

  • Support for arbitrary data file formats in the Data Cascade. e.g. eleventyConfig.addDataExtension("yaml", contents => yaml.safeLoad(contents)); Thank you @gloryofrobots! #736 #798 #635 #630 #624 #265
    • ⚠️ Documentation pending
  • Adds setQuietMode method to Configuration API so that we don’t have to type --quiet all the time. #808
  • Adds addWatchTarget method to Configuration API for programmatic watching of arbitrary files. Thanks @MadeByMike! #803 #641
  • Show pathPrefix being used in standard console output (if non-default). #807
  • Adds getFilteredByTags to Collection API #708 #711 #830

Pagination

Performance

Shortcodes

Miscellanous

Documentation Web Site

Bug fixes

  • Improved error reporting in shortcode code. #681
  • Issue with Cannot read property 'trim' of undefined error on unhandledRejection events. #689
  • Fix for require node cache busting on Windows (some JavaScript files may not have picked up changes when watching) #341 #596 #683 Thanks @cschuller!
  • Fix bug with negated entries (!) in .gitignore or .eleventyignore files. The bug caused Eleventy to not process any files. Support was not added for negated entries—they are ignored for now. Thanks @micahmills! #677 #709
  • Fix to Sortable implementation, improved tests—thanks @edbrannin! #747
  • Fix small variable scoping issue in TemplateWriter—thanks @fredrikekelund! #724 #722
  • Fix data bleed issue in the Data Cascade with front matter and setDataDeepMerge. Thanks @ahl! #676 #735
  • Improved test coverage for EleventyErrorUtil—thank you @edbrannin! #753

Administration

Dependency Major Release Bumps

🚧🚧 Eleventy 🕚⚡️ v0.10.0 Beta 1 🚧🚧

09 Dec 02:26
Compare
Choose a tag to compare

Eleventy is a Simpler Static Site Generator.

A special note of remembrance

Before we get going here I just want to take a brief moment to remember the very special @jameswillweb who passed away earlier this month. James was diagnosed with ALS in 2013 and was known for his widespread teaching contributions to the web community. Probably the least of which, but one that I will always remember, was his creation of the floating possum mascot for our little Eleventy project. This mascot (nay, mastcot, because it lives in the masthead ok fine but James would have liked that one) lives at the top of the Eleventy docs and links to the Twitter thread he started in 2018. Though we never met in real life, James was clearly a one-of-a-kind. We will miss you ❤️

Donations may be made in James’ name to The ALS Therapy Development Institute or to Quest Youth Ministries at St. John's United Methodist Church.

Permalink: https://www.11ty.dev/news/james-williamson/

Installation

Install this 🚧🚧 prerelease 🚧🚧 to help test the upcoming Eleventy 0.10.0 release:

npm install @11ty/eleventy@beta --save-dev

Thank you to the code contributors that helped with this release!

@gloryofrobots @edbrannin @MadeByMike @Ryuno-Ki @cschuller @micahmills @fredrikekelund @ahl @Munter (and @zachleat, I guess)

Features

Official Plugins

Configuration API

  • Support for arbitrary data file formats in the Data Cascade. e.g. eleventyConfig.addDataExtension("yaml", contents => yaml.safeLoad(contents)); Thank you @gloryofrobots! #736 #798 #635 #630 #624 #265
    • ⚠️ Documentation pending
  • Adds setQuietMode method to Configuration API so that we don’t have to type --quiet all the time. #808
  • Adds addWatchTarget method to Configuration API for programmatic watching of arbitrary files. Thanks @MadeByMike! #803 #641
  • Show pathPrefix being used in standard console output (if non-default). #807

Pagination

Performance

Shortcodes

Miscellanous

Documentation Web Site

Bug fixes

  • Improved error reporting in shortcode code. #681
  • Issue with Cannot read property 'trim' of undefined error on unhandledRejection events. #689
  • Fix for require node cache busting on Windows (some JavaScript files may not have picked up changes when watching) #341 #596 #683 Thanks @cschuller!
  • Fix bug with negated entries (!) in .gitignore or .eleventyignore files. The bug caused Eleventy to not process any files. Support was not added for negated entries—they are ignored for now. Thanks @micahmills! #677 #709
  • Fix to Sortable implementation, improved tests—thanks @edbrannin! #747
  • Fix small variable scoping issue in TemplateWriter—thanks @fredrikekelund! #724 #722
  • Fix data bleed issue in the Data Cascade with front matter and setDataDeepMerge. Thanks @ahl! #676 #735
  • Improved test coverage for EleventyErrorUtil—thank you @edbrannin! #753

Administration

Dependency Major Release Bumps

Eleventy 🕚⚡️ v0.9.0: Oh my

27 Aug 13:30
Compare
Choose a tag to compare

Eleventy is a Simpler Static Site Generator.

v0.9.0 Documentation

Support Eleventy:

Install

  • Install to your Local project (preferred): npm install @11ty/eleventy
  • Already installed in your local project? Upgrade your version: npm update @11ty/eleventy
  • Want to install globally? npm install -g @11ty/eleventy
  • Already installed globally? Upgrade your Global version: npm update -g @11ty/eleventy
  • Read more about local versus global installation

Thank you to the 10 contributors that helped with this release!

@danielstaleiny @veleek @aarongustafson @edwardhorsford @Ryuno-Ki @paulshryock @jakearchibald @MadeByMike @Munter (and @zachleat I guess)

Changelog

Features

  • Shows Eleventy version in standard console output (should help me out a lot when debugging issues 👀) #657
  • Relative Includes added in Nunjucks, Liquid (already supported in EJS and Pug) #190
  • Adds support for Passthrough Copy output directory remapping #452 Thank you @MadeByMike!
  • Throws an error if two input templates attempt to write to the same output file (overlapping permalinks) #322 #562
  • Allows custom options (and formats) in front matter #410
    • e.g. use TOML in your front matter #113
    • e.g. use Front Matter excerpts
  • Adds page.filePathStem variable for permalinks #244
  • JavaScript Templates (*.11ty.js) #622 #627 Thanks @jakearchibald!
    • Throws an error when a JavaScript template returns invalid data format #626
    • When using classes, we now re-use the same instance for data and rendering
    • Add support for JavaScript objects a la exports = { data: {}, render: function() {}
    • Add support for JavaScript Class Fields (Node 12 feature) a la: exports = class { data = {}; render() {} }
    • Add support for multiple exports a la exports.data = {}; exports.render = function() {}
    • Fails gracefully when class/object is missing a render method.
  • Config file functions do not yet support returning promises, now we throw an error when this happens. #612 Thanks @Munter!
  • Current behavior auto-ignores node_modules directory if .gitignore does not exist. Eleventy will now also auto-ignore if .gitignore does exist but is empty. #389 Thank you @danielstaleiny!
  • Eleventy searches for file extensions are now cross-platform case insensitive. #509 #517 Thanks @veleek!

Bug fixes

  • Shows path to template on template rendering errors (No more Unknown path) #547
  • Fixes page.fileSlug with JavaScript Templates (was returning fileName.11ty, should be fileName) #588
  • Fixes issue with Liquid shortcode argument parsing (failed on page.* variables) #600
  • Fixes issue with eleventyExcludeFromCollections templates incorrectly throwing TemplateContentPrematureUseError errors. #522
  • Upgrades browser-sync to remove audit report #428
  • Fixes issue with empty tags in front matter #557 Thanks @edwardhorsford!
  • Fix for TemplateContentPrematureUseError error when using pagination #551, #634.

Docs and other

Dependency Major Release Bumps

Note that dev-dependencies are not included here.

  • chokidar from v2 to v3: requires Node 8+ Release notes
  • dependency-tree from v6 to v7: upgraded precinct from 5.x to 6.x for some typescript things ¯_(ツ)_/¯ (No release notes for this project: issue filed)
  • fs-extra from v7 to v8: Release notes
  • multimatch from v3 to v4: requires Node 8+ Release notes

Administration

🚧🚧 Eleventy 🕚⚡️ v0.9.0 Beta 2: Hopefully the Last Beta

17 Aug 17:56
Compare
Choose a tag to compare

Eleventy is a Simpler Static Site Generator.

Install this 🚧🚧 prerelease 🚧🚧 to help test the upcoming Eleventy 0.9.0 release:

npm install @11ty/eleventy@beta --save-dev

Thank you to the 10 contributors that helped with this release!

@danielstaleiny @veleek @aarongustafson @edwardhorsford @Ryuno-Ki @paulshryock @jakearchibald @MadeByMike @Munter (and @zachleat I guess)

Features

  • Shows Eleventy version in standard console output (should help me out a lot when debugging issues 👀) #657
  • Relative Includes added in Nunjucks, Liquid (already supported in EJS and Pug) #190
  • Adds support for Passthrough Copy output directory remapping #452 Thank you @MadeByMike!
  • Throws an error if two input templates attempt to write to the same output file (overlapping permalinks) #322 #562
  • Allows custom options (and formats) in front matter #410
    • e.g. use TOML in your front matter #113
    • e.g. use Front Matter excerpts
  • Adds page.filePathStem variable for permalinks #244
  • JavaScript Templates (*.11ty.js) #622 #627 Thanks @jakearchibald!
    • Throws an error when a JavaScript template returns invalid data format #626
    • When using classes, we now re-use the same instance for data and rendering
    • Add support for JavaScript objects a la exports = { data: {}, render: function() {}
    • Add support for JavaScript Class Fields (Node 12 feature) a la: exports = class { data = {}; render() {} }
    • Add support for multiple exports a la exports.data = {}; exports.render = function() {}
    • Fails gracefully when class/object is missing a render method.
  • Config file functions do not yet support returning promises, now we throw an error when this happens. #612 Thanks @Munter!
  • Current behavior auto-ignores node_modules directory if .gitignore does not exist. Eleventy will now also auto-ignore if .gitignore does exist but is empty. #389 Thank you @danielstaleiny!
  • Eleventy searches for file extensions are now cross-platform case insensitive. #509 #517 Thanks @veleek!

Bug fixes

  • Shows path to template on template rendering errors (No more Unknown path) #547
  • Fixes page.fileSlug with JavaScript Templates (was returning fileName.11ty, should be fileName) #588
  • Fixes issue with Liquid shortcode argument parsing (failed on page.* variables) #600
  • Fixes issue with eleventyExcludeFromCollections templates incorrectly throwing TemplateContentPrematureUseError errors. #522
  • Upgrades browser-sync to remove audit report #428
  • Fixes issue with empty tags in front matter #557 Thanks @edwardhorsford!
  • Fix for TemplateContentPrematureUseError error when using pagination #551, #634.

Docs and other

Dependency Major Release Bumps

Administration