Releases: 11ty/eleventy
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
fro...
Eleventy v0.12.1
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?
- ⭐️ Star us on GitHub!
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Support us on Open Collective!
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
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?
- ⭐️ Star us on GitHub!
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Support us on Open Collective!
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
- Required for
npm audit
issue, tracking on Eleventy Issue: #1674 - 3.x requires Node 10+
pug
release notes https://github.com/pugjs/pug/releases/tag/pug%403.0.0
chalk
3.0.0 to 4.1.0
- 4.x requires Node 10+
chalk
release notes https://github.com/chalk/chalk/releases/tag/v4.0.0
fs-extra
8.1.0 to 9.1.0
- 9.x requires Node 10+
- https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md#900--2020-03-19
Administration
Eleventy v0.11.1
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?
- ⭐️ Star us on GitHub!
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Support us on Open Collective!
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
afterBuild
,beforeBuild
and Changed Files argument passed tobeforeWatch
- Documentation: https://www.11ty.dev/docs/events/
Administration
Eleventy v0.11.0: The Eponymous Release
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?
- ⭐️ Star us on GitHub!
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Support us on Open Collective!
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.
- Read more: https://www.11ty.dev/docs/data-computed/
- All the related issues: #481 #335 #1061 #1043 #1098 #1085 #1031 #1130 #973 #1114 #1138 #1069 #1137 Supersedes and deprecates old
renderData
feature (not removed yet): #942 #941 #289 #816 #912
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
- Adds support for
*.11ty.cjs
files (same as*.11ty.js
files)—thanks @justinfagnani! #826 #827- Can use
.cjs
in config file, template/directory/global data files—thanks @gloryofrobots! #837 #848
- Can use
New Filters
- Filters to retrieve next/previous items in collections. Thanks @pascalw! #529 #819 #983
- Adds new
log
filter for easy console.log from inside templates. #929
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
- Issues fixed in v0.11.0 Milestone
- All code changes from v0.10.0 to v0.11.0
- Code coverage stats for v0.11.0
Dependency Major Release Bumps
markdown-it
from v8.4.2 to v10.0.0. Read more: https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md
Eleventy 🕚⚡️ v0.10.0: New year new me
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?
- ⭐️ Starring us on GitHub! This will increase our project’s visibility on staticgen.com, a big giant list of static site generators.
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Join 62 other lovely people and become an Eleventy Supporter!
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
- Adds new official Navigation Plugin for hierarchical site navigation and breadcrumbs #419 #210 https://github.com/11ty/eleventy-navigation
- Documentation: https://www.11ty.dev/docs/plugins/navigation/
- New major version of
eleventy-plugin-syntaxhighlight
, only opt-in to line wrapping markup if line highlighting features are used. Read more: https://github.com/11ty/eleventy-plugin-syntaxhighlight/releases/tag/v3.0.0- Documentation: https://www.11ty.dev/docs/plugins/syntaxhighlight/
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
- Adds a
before
callback option to pagination to allow you to modify the data prior to it being paginated. Very powerful! #699- Documentation: https://www.11ty.dev/docs/pagination/#the-before-callback
- Adds
pagination.alias
andpagination.pages
options to pagination variable. These will help when creating navigation for your pagination. #280 #345 #334 #211- Documentation: https://www.11ty.dev/docs/pagination/nav/
Performance
dependency-tree
npm package used to find JavaScript dependencies was slow. https://www.11ty.dev/docs/config/#watch-javascript-dependencies Wrote https://github.com/11ty/eleventy-dependency-tree to solve this. One major difference here is that dependencies now will berequire’d
to resolve—so be aware of this if your node files aren’t idempotent! This pays off in a huge performance boost when using--watch
or--serve
. #700
Shortcodes
- Better support for asynchronous shortcodes (shortcode functions can return promises). Supported in
11ty.js
, Liquid, and Nunjucks templates. #672 #429- Documentation updated:
- https://www.11ty.dev/docs/shortcodes/
- https://www.11ty.dev/docs/languages/javascript/
- https://www.11ty.dev/docs/languages/liquid/
- https://www.11ty.dev/docs/languages/nunjucks/
- https://www.11ty.dev/docs/languages/handlebars/#asynchronous-helpers (not supported in Handlebars but the docs were updated to reflect this)
- Documentation updated:
Miscellanous
Documentation Web Site
- We launched Contributor Accounts on 11ty.dev, including access to on-site documentation search.
- Documentation moved from 11ty.io to 11ty.dev
- Official Eleventy plugin documentation moved to 11ty.dev
- @Munter added his
hyperlink
checker to the 11ty documentation for link rot checking! Source tweet
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
- Issues fixed in v0.10.0 Milestone
- All code changes from v0.9.0 to v0.10.0
- Code coverage stats for v0.10.0
- ✅ npm audit passed
Dependency Major Release Bumps
- chalk from v2.4 to v3.0.0
- semver v6.3 to v7.1: Drops support for old versions of Node
- handlebars from v4.1.2 to v4.5.3 (while this isn’t technically a major release bump, it’s a fair number of minor releases and probably worth noting)
🚧🚧 Eleventy 🕚⚡️ v0.10.0 Beta 2 🚧🚧
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
- Adds new official Navigation Plugin for hierarchical site navigation and breadcrumbs #419 #210 https://github.com/11ty/eleventy-navigation
- Documentation: https://www.11ty.dev/docs/plugins/navigation/
- New major version of
eleventy-plugin-syntaxhighlight
, only opt-in to line wrapping markup if line highlighting features are used. Read more: https://github.com/11ty/eleventy-plugin-syntaxhighlight/releases/tag/v3.0.0- Documentation: https://www.11ty.dev/docs/plugins/syntaxhighlight/
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
- Adds a
before
callback option to pagination to allow you to modify the data prior to it being paginated. Very powerful! #699- Documentation: https://www.11ty.dev/docs/pagination/#the-before-callback
- Adds
pagination.alias
andpagination.pages
options to pagination variable. These will help when creating navigation for your pagination. #280 #345 #334 #211- Documentation: https://www.11ty.dev/docs/pagination/nav/
Performance
dependency-tree
npm package used to find JavaScript dependencies was slow. https://www.11ty.dev/docs/config/#watch-javascript-dependencies Wrote https://github.com/11ty/eleventy-dependency-tree to solve this. One major difference here is that dependencies now will berequire’d
to resolve—so be aware of this if your node files aren’t idempotent! This pays off in a huge performance boost when using--watch
or--serve
. #700
Shortcodes
- Better support for asynchronous shortcodes (shortcode functions can return promises). Supported in
11ty.js
, Liquid, and Nunjucks templates. #672 #429- Documentation updated:
- https://www.11ty.dev/docs/shortcodes/
- https://www.11ty.dev/docs/languages/javascript/
- https://www.11ty.dev/docs/languages/liquid/
- https://www.11ty.dev/docs/languages/nunjucks/
- https://www.11ty.dev/docs/languages/handlebars/#asynchronous-helpers (not supported in Handlebars but the docs were updated to reflect this)
- Documentation updated:
Miscellanous
Documentation Web Site
- We launched Contributor Accounts on 11ty.dev, including access to on-site documentation search.
- Documentation moved from 11ty.io to 11ty.dev
- Official Eleventy plugin documentation moved to 11ty.dev
- @Munter added his
hyperlink
checker to the 11ty documentation for link rot checking! Source tweet
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
- Issues fixed in v0.10.0 Milestone
- All code changes from v0.9.0 to v0.10.0-beta.2
- Code coverage stats for v0.10.0-beta.2
- ✅ npm audit passed
Dependency Major Release Bumps
- chalk from v2.4 to v3.0.0
- semver v6.3 to v7.1: Drops support for old versions of Node
- handlebars from v4.1.2 to v4.5.3 (while this isn’t technically a major release bump, it’s a fair number of minor releases and probably worth noting)
🚧🚧 Eleventy 🕚⚡️ v0.10.0 Beta 1 🚧🚧
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
- Adds new official Navigation Plugin for hierarchical site navigation and breadcrumbs #419 #210 https://github.com/11ty/eleventy-navigation
- Documentation: https://www.11ty.dev/docs/plugins/navigation/
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
- Adds a
before
callback option to pagination to allow you to modify the data prior to it being paginated. Very powerful! #699- Documentation: https://www.11ty.dev/docs/pagination/#the-before-callback
- Adds
pagination.alias
andpagination.pages
options to pagination variable. These will help when creating navigation for your pagination. #280 #345 #334 #211- Documentation: https://www.11ty.dev/docs/pagination/nav/
Performance
dependency-tree
npm package used to find JavaScript dependencies was slow. https://www.11ty.dev/docs/config/#watch-javascript-dependencies Wrote https://github.com/11ty/eleventy-dependency-tree to solve this. One major difference here is that dependencies now will berequire’d
to resolve—so be aware of this if your node files aren’t idempotent! This pays off in a huge performance boost when using--watch
or--serve
. #700
Shortcodes
- Better support for asynchronous shortcodes (shortcode functions can return promises). Supported in
11ty.js
, Liquid, and Nunjucks templates. #672 #429- Documentation updated:
- https://www.11ty.dev/docs/shortcodes/
- https://www.11ty.dev/docs/languages/javascript/
- https://www.11ty.dev/docs/languages/liquid/
- https://www.11ty.dev/docs/languages/nunjucks/
- https://www.11ty.dev/docs/languages/handlebars/#asynchronous-helpers (not supported in Handlebars but the docs were updated to reflect this)
- Documentation updated:
Miscellanous
Documentation Web Site
- We launched Contributor Accounts on 11ty.dev, including access to on-site documentation search.
- Documentation moved from 11ty.io to 11ty.dev
- Official Eleventy plugin documentation moved to 11ty.dev
- @Munter added his
hyperlink
checker to the 11ty documentation for link rot checking! Source tweet
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
- Issues fixed in v0.10.0 Milestone
- All code changes from v0.9.0 to v0.10.0-beta.1
- Code coverage stats for v0.10.0-beta.1
- ✅ npm audit passed
Dependency Major Release Bumps
- chalk from v2.4 to v3.0.0
- handlebars from v4.1.2 to v4.5.3 (while this isn’t technically a major release bump, it’s a fair number of minor releases and probably worth noting)
Eleventy 🕚⚡️ v0.9.0: Oh my
Eleventy is a Simpler Static Site Generator.
v0.9.0 Documentation
Support Eleventy:
- ⭐️ Starring us on GitHub! This will increase our project’s visibility on staticgen.com, a big giant list of static site generators.
- 🐦 Follow us on Twitter @eleven_ty!
- 🎁 Join 32 other lovely people and become an Eleventy Supporter!
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 returningfileName.11ty
, should befileName
) #588 - Fixes issue with Liquid shortcode argument parsing (failed on
page.*
variables) #600 - Fixes issue with
eleventyExcludeFromCollections
templates incorrectly throwingTemplateContentPrematureUseError
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
- Adds new layouts directory to debug output #574 Thanks @paulshryock!
- Adds links to plugins from README #570 Thanks @Ryuno-Ki!
Dependency Major Release Bumps
Note that dev-dependencies
are not included here.
fast-glob
from v2 to v3: Release notes
chokidar
from v2 to v3: requires Node 8+ Release notesdependency-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 notesmultimatch
from v3 to v4: requires Node 8+ Release notes
Administration
- Issues fixed in v0.9.0 Milestone
- All code changes from v0.8.3 to v0.9.0
- Code coverage stats for v0.9.0
npm audit
found 0 vulnerabilities in 7917 scanned packages
🚧🚧 Eleventy 🕚⚡️ v0.9.0 Beta 2: Hopefully the Last Beta
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 returningfileName.11ty
, should befileName
) #588 - Fixes issue with Liquid shortcode argument parsing (failed on
page.*
variables) #600 - Fixes issue with
eleventyExcludeFromCollections
templates incorrectly throwingTemplateContentPrematureUseError
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
- Adds new layouts directory to debug output #574 Thanks @paulshryock!
- Adds links to plugins from README #570 Thanks @Ryuno-Ki!
Dependency Major Release Bumps
fast-glob
from v2 to v3: Release notes