From 7ce1494a58673f605d68e51311966f9249b71357 Mon Sep 17 00:00:00 2001 From: Zach Leatherman Date: Fri, 15 Apr 2022 15:16:35 -0500 Subject: [PATCH] Cherry pick to 1.x: Adds `eleventy.version` and `eleventy.generator` to Eleventy supplied global data to fix #2293. --- src/TemplateData.js | 12 +++++++++--- test/TemplateDataTest.js | 25 +++++++++++++++++++++---- test/TemplateTest.js | 2 ++ test/stubs-empty/.gitkeep | 0 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 test/stubs-empty/.gitkeep diff --git a/src/TemplateData.js b/src/TemplateData.js index 7053dd812..b37615235 100755 --- a/src/TemplateData.js +++ b/src/TemplateData.js @@ -1,9 +1,11 @@ +const pkg = require("../package.json"); const fs = require("fs"); const fastglob = require("fast-glob"); const path = require("path"); const lodashset = require("lodash/set"); const lodashget = require("lodash/get"); const lodashUniq = require("lodash/uniq"); +const semver = require("semver"); const { TemplatePath } = require("@11ty/eleventy-utils"); const merge = require("./Util/Merge"); @@ -310,10 +312,14 @@ class TemplateData { } } + if (!("eleventy" in globalData)) { + globalData.eleventy = {}; + } + // #2293 for meta[name=generator] + globalData.eleventy.version = semver.coerce(pkg.version).toString(); + globalData.eleventy.generator = `Eleventy v${globalData.eleventy.version}`; + if (this.environmentVariables) { - if (!("eleventy" in globalData)) { - globalData.eleventy = {}; - } if (!("env" in globalData.eleventy)) { globalData.eleventy.env = {}; } diff --git a/test/TemplateDataTest.js b/test/TemplateDataTest.js index dffedb454..3ba4ab8f9 100644 --- a/test/TemplateDataTest.js +++ b/test/TemplateDataTest.js @@ -456,10 +456,8 @@ test("Parent directory for data (Issue #337)", async (t) => { let data = await dataObj.getData(); - t.deepEqual(data, { - xyz: { - hi: "bye", - }, + t.deepEqual(data.xyz, { + hi: "bye", }); }); @@ -519,3 +517,22 @@ test("addGlobalData complex key", async (t) => { t.is(data.deep.nested.one, "first"); t.is(data.deep.nested.two, "second"); }); + +test("eleventy.version and eleventy.generator returned from data", async (t) => { + let eleventyConfig = new TemplateConfig(); + eleventyConfig.userConfig.addGlobalData("deep.nested.one", () => "first"); + eleventyConfig.userConfig.addGlobalData("deep.nested.two", () => "second"); + + let dataObj = new TemplateData("./test/stubs-empty/", eleventyConfig); + let data = await dataObj.getData(); + + let version = require("semver") + .coerce(require("../package.json").version) + .toString(); + + t.is(data.eleventy.version, version); + t.is(data.eleventy.generator, `Eleventy v${version}`); + + t.is(data.deep.nested.one, "first"); + t.is(data.deep.nested.two, "second"); +}); diff --git a/test/TemplateTest.js b/test/TemplateTest.js index ef0ae06c9..11aba5cfa 100644 --- a/test/TemplateTest.js +++ b/test/TemplateTest.js @@ -1362,6 +1362,7 @@ test("Data Cascade (Deep merge)", async (t) => { let data = await tmpl.getData(); t.deepEqual(Object.keys(data).sort(), [ "datafile", + "eleventy", "frontmatter", "page", "parent", @@ -1397,6 +1398,7 @@ test("Data Cascade (Shallow merge)", async (t) => { let data = await tmpl.getData(); t.deepEqual(Object.keys(data).sort(), [ "datafile", + "eleventy", "frontmatter", "page", "parent", diff --git a/test/stubs-empty/.gitkeep b/test/stubs-empty/.gitkeep new file mode 100644 index 000000000..e69de29bb