Eleventy v1.0.0: First!
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:
- 🏆 A super special thanks to Peter DeHaan and Binyamin Green for their tireless contributions on the Eleventy Issue tracker.
- All of our supporters on Open Collective ❤️
- Gold Sponsors: Sanity.io, Nordhealth, Screen recorder for Mac
- Silver Sponsors: Piccalilli, ESLint, Unabridged Software, PQINA, The Coders Guild, Bejamas
- A full list of Backers can be found below!
- Contribute on Open Collective
- How else can you contribute to Eleventy?
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
- Docs: Data Deep Merge and Issue #1753
- 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).
- Docs: Data Cascade and Issue #915
liquidjs
v9 major version upgrade changes:setLiquidOptions
: Eleventy default fordynamicPartials
changed totrue
. Issue #240 Unquoted include paths will need to be updated or revert usingdynamicPartials: false
setLiquidOptions
: Liquid optionstrict_filters
renamed tostrictFilters
. Issue #1390setLiquidOptions
: Eleventy default forstrict_filters
/strictFilters
changed totrue
. 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-%>
!
- Removes
.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 useliquid
’s built-indate
format withpage.date
!- Docs: Content Dates, Issue #1752, and harttle/liquidjs#375
browser-sync
:- Default to
ui: false
Issue #843 - Default to
ghostMode: false
Issue #841 - Re-enable these features using
eleventyConfig.setBrowserSyncConfig
- Default to
- Removes the
jstl
template language. Use11ty.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
- Custom File Extension Handlers: applications and plugins can now add their own template types and tie them to a file extension.
- Docs: Custom Template Languages and Issue #117
- Render Plugin, shortcodes to render other template languages.
- Serverless Plugin, allow Eleventy templates to run in a serverless function for server side rendering.
- Use with Netlify Functions and On-demand Builders
- Docs: Serverless Plugin
- Adds support for
--to=json
and--to=ndjson
- Docs: Command Line Usage
- Use Data Filter Selectors to opt-in data from the Data Cascade. Docs: Configuration: Data Filter Selectors
- Adds support for programmatic Eleventy (e.g.
new Eleventy()
in your Node.js script) - Configuration:
addGlobalData
method.- Docs: Global Data from the Configuration API and Issue #1280
- Note also that JavaScript Global Data Files now receive data. Docs: JavaScript Data Files
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 previousslug
.slug
is still included for backwards compatiblity.slugify
Docs.eleventy-upgrade-help
includes a permalink checker to compareslug
andslugify
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:
eleventy
Global Data- Environment Variables:
- Docs: Eleventy Supplied Data: Environment Variables
ELEVENTY_ROOT
ELEVENTY_SOURCE
ELEVENTY_SERVERLESS
tags
are now de-duped. Issue #1876- JavaScript functions in
eleventyComputed
now have access to global filters.- Docs: Computed Data and Issue #1862
- Ignores
node_modules
are now ignored by default. Docs: Ignores and Issue #383- Control ignores programmatically. Docs: Ignores and Issue #894 #1405
- Configuration: Access to
eleventyConfig.dir
in plugins. Issue #922 - Configuration: Events are now Async-friendly
- Docs: Events and Issue #1363
- Replace
chalk
dependency withkleur
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
ormd
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
tograceful-fs
Major Version Dependency Upgrades
These are convenience links provided. Major things of note are summarized in the Breaking Changes section above.
liquidjs
from 6 to 9, release notes: v7 v8 v9luxon
from 1 to 2: (Node 12+ minimum) Upgrade Guidemarkdown-it
from 10 to 12, release notes: v11 v12ejs
from 2 to 3. Release notes: v3mustache
from 2 to 4. Release notes: v3 v4
THANK YOU NOTES
First-time GitHub contributions from @d2s, @Snugug, @slightlyoff, @max, @valtlai, @harttle, @binyamin, @bnb, @NotWoods, @gobeli, @lxg, @GerHobbelt, @hirusi, @stuartpb, @milahu, @oscarotero, @jakemulley, @tannerdolby, @Snapstromegon, @knokmki612, @mariusschulz, @Holben888, @zidingz, @magua-io, @masguit42, @JKC-Codes, @ThewBear, @CodeFoodPixels, @dgrammatiko, @oscard0m, @monochromer
Gold Sponsors: Sanity.io, Nordhealth, Screen recorder for Mac
Silver Sponsors: Piccalilli, ESLint, Unabridged Software, PQINA, The Coders Guild, Bejamas
OpenCollective Monthly Backers: Viljami Salminen, Tyler Gaw, Peter deHaan, Melanie Sumner, Alejandro Rodríguez, Mat Marquis, Philip Borenstein, Jérôme Coupé, Max Böck, Bryce Wray, Kristof Michiels, Yuhei Yasuda, Ed Spencer, Nicolas Hoizey, Mike Aparicio, Todd Libby, Luke Bonaccorsi, Ben Myers, Katie Sylor-Miller, Mark Buskbjerg, mortendk, Aaron Hans, Lauris Consulting, John Meyerhofer, Ben Hyrman, Keenan Payne, Dimitrios Grammatikogiannis, Devin Clark, Eric Bailey, Dave Rupert, Manuel Matuzovic, Phil Hawksworth, Brian Koser, Tianyu Ge, Vadim Makeev, Kyosuke Nakamura, Hans Gerwitz, Makoto Kawasaki, Horacio Gonzalez, Matthew Tole, Wellness Researched, Ned Zimmerman, Mark Boulton, Søren Birkemeyer, Richard Hemmer, Nick Nisi, Andrew Harvard, shawn j sandy, Takuya Fukuju, John SJ Anderson, Ryan Swaney, Alistair Shepherd, Reach Digital, Ivo Herrmann, Flaki, Kyle Mitofsky, Jenn Schiffer, John Hall, Scott McCracken, James Steinbach, Miriam Suzanne, Bentley Davis, Evan Harrison, Rob Sterlini, vince falconi, Martin Schneider, Stephanie Eckles, Frontend Weekly Tokyo, Higby, Matt DeCamp, Chris Burnell, Ximenav Vf., Juan Miguel, Angelique Weger, Kasper Storgaard, Kevin Healy, Greg Gibson, hiddedevries.nl, Jeremy Caldwell, Michelle Barker, Alesandro Ortiz, David A. Herron, Paul Robert Lloyd, Andrea Vaghi, Bryan Robinson, Ashur Cabrera, Raymond Camden, John Meguerian, Joe Lamyman, Stuart Robson, Jeffrey A Morgan, Joshua Ray, Tim Giles, Brett Nelson, Paul Welsh, Ingo Steinke, Melanie Richards, Rich Holman, Ross Kinney, Lewis Nyman, Dorin Vancea, Marco Zehe, Wes Ruvalcaba, Luc Poupard, Johan Bové, Josh Crain, Entle Web Solutions, Ken Hawkins, Sami Singh, Fershad Irani, Nikita Dubko, Aaron Gustafson, Chris, Ferpection, Benjamin Geese, Maël Brunet, Marcus Relacion, Netin nopeustesti, Bobby Ray, Sia Karamalegos, Christian Miles, Raphael Höser, Cthos, Saneef Ansari, Flemming Meyer, Colin Fahrion, Dan Burzo, Gaston Rampersad, Jon Kuperman, Dan Ott, Mobilemall.pk, Cheap VPS, David Darnes, Jon Roobottom, Dana Byerly, Renkaatsopivasti, Windesol Sähkön Kilpailutus, Luke Mitchell, SignpostMarv, THE PADDING, Bob Monsour, Patrick Byrne, Ara Abcarians, Oisín Quinn, Central Va Insulation, Septic Richmond Va