eleventy-plugin-vento 5.3.0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/dist/plugin.d.mts +45 -3
- package/dist/plugin.mjs +106 -30
- package/package.json +13 -14
- package/readme.md +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# eleventy-plugin-vento
|
|
2
2
|
|
|
3
|
+
## 5.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 712a39d: Error logging improvements (thanks @tmcw for the help on this!)
|
|
8
|
+
|
|
9
|
+
Re-implements Vento's `stringifyError` function tailored specifically for Eleventy in order to show errors in a nice format that Eleventy expects
|
|
10
|
+
|
|
11
|
+
Notably, the one case where this doesn't work is if Vento cannot capture a position from the source code [due to limitations in Node/Bun](https://github.com/noelforte/eleventy-plugin-vento/issues/408#issuecomment-3748576474). In this case, we'll log a warning to the console...
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
[warning] A `SyntaxError` was thrown, but the exact position within the source code cannot be obtained
|
|
15
|
+
[warning] Use DEBUG="Eleventy:Vento*" to view raw `ErrorContext` information
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
...and log the entire context object to the `DEBUG` namespace `Eleventy:Vento:Error`:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Eleventy:Vento:Error ErrorContext (via Vento) {
|
|
22
|
+
Eleventy:Vento:Error type: 'SyntaxError',
|
|
23
|
+
Eleventy:Vento:Error message: "Unexpected token '{'",
|
|
24
|
+
Eleventy:Vento:Error source: '<div class="image-grid">\n' +
|
|
25
|
+
Eleventy:Vento:Error ' {{ for image of collections.{{gallery}} }}\n' +
|
|
26
|
+
Eleventy:Vento:Error ' <img src="{{ image }} ">\n' +
|
|
27
|
+
Eleventy:Vento:Error ' {{ /for }}\n' +
|
|
28
|
+
Eleventy:Vento:Error '</div>\n',
|
|
29
|
+
Eleventy:Vento:Error code: '\n' +
|
|
30
|
+
Eleventy:Vento:Error ' var {image,collections,gallery} = it;\n' +
|
|
31
|
+
Eleventy:Vento:Error ' {\n' +
|
|
32
|
+
Eleventy:Vento:Error '__exports.content += "<div class=\\"image-grid\\">\\n ";\n' +
|
|
33
|
+
Eleventy:Vento:Error '__pos=27;\n' +
|
|
34
|
+
Eleventy:Vento:Error 'for (let image of __env.utils.toIterator(collections.{{gallery}})) {\n' +
|
|
35
|
+
Eleventy:Vento:Error '__exports.content += "\\n <img src=\\"";\n' +
|
|
36
|
+
Eleventy:Vento:Error '__pos=84;\n' +
|
|
37
|
+
Eleventy:Vento:Error '__exports.content += (image) ?? "";\n' +
|
|
38
|
+
Eleventy:Vento:Error '__exports.content += " \\">\\n ";\n' +
|
|
39
|
+
Eleventy:Vento:Error '}\n' +
|
|
40
|
+
Eleventy:Vento:Error '__exports.content += "\\n</div>\\n";\n' +
|
|
41
|
+
Eleventy:Vento:Error '}\n' +
|
|
42
|
+
Eleventy:Vento:Error ' ',
|
|
43
|
+
Eleventy:Vento:Error file: '_includes/partials/imageGrid.vto'
|
|
44
|
+
Eleventy:Vento:Error } +0ms
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- 9f8c8ae: Update ventojs to v2.3.1
|
|
50
|
+
|
|
3
51
|
## 5.3.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/dist/plugin.d.mts
CHANGED
|
@@ -1,10 +1,52 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import * as ventojs from "ventojs";
|
|
2
3
|
import _UserConfig from "@11ty/eleventy/UserConfig";
|
|
3
|
-
import { LiteralUnion } from "type-fest";
|
|
4
4
|
import { Plugin } from "ventojs/core/environment.js";
|
|
5
5
|
|
|
6
|
-
//#region
|
|
6
|
+
//#region node_modules/.pnpm/11ty.ts@0.0.7_@11ty+eleventy@3.1.2/node_modules/11ty.ts/dist/index.d.ts
|
|
7
|
+
declare global {
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
|
|
9
|
+
interface SymbolConstructor {
|
|
10
|
+
readonly observable: symbol;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
|
|
15
|
+
|
|
16
|
+
Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
|
|
17
|
+
|
|
18
|
+
This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
|
|
19
|
+
|
|
20
|
+
@example
|
|
21
|
+
```
|
|
22
|
+
import type {LiteralUnion} from 'type-fest';
|
|
23
|
+
|
|
24
|
+
// Before
|
|
25
|
+
|
|
26
|
+
type Pet = 'dog' | 'cat' | string;
|
|
7
27
|
|
|
28
|
+
const pet: Pet = '';
|
|
29
|
+
// Start typing in your TypeScript-enabled IDE.
|
|
30
|
+
// You **will not** get auto-completion for `dog` and `cat` literals.
|
|
31
|
+
|
|
32
|
+
// After
|
|
33
|
+
|
|
34
|
+
type Pet2 = LiteralUnion<'dog' | 'cat', string>;
|
|
35
|
+
|
|
36
|
+
const pet: Pet2 = '';
|
|
37
|
+
// You **will** get auto-completion for `dog` and `cat` literals.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
@category Type
|
|
41
|
+
*/
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/types/utilities.d.ts
|
|
44
|
+
/**
|
|
45
|
+
* Matches any given string so autocomplete in literal unions works as expected
|
|
46
|
+
*/
|
|
47
|
+
type AnyString = string & Record<never, never>;
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/types/eleventy.d.ts
|
|
8
50
|
interface UserConfig extends _UserConfig {
|
|
9
51
|
directories: {
|
|
10
52
|
input: string;
|
|
@@ -32,7 +74,7 @@ interface PluginOptions {
|
|
|
32
74
|
* autotrim: ['@vento', '@11ty']
|
|
33
75
|
* autotrim: true
|
|
34
76
|
*/
|
|
35
|
-
autotrim:
|
|
77
|
+
autotrim: ('@11ty' | '@vento' | AnyString)[] | boolean;
|
|
36
78
|
/**
|
|
37
79
|
* Enable use of Eleventy filters
|
|
38
80
|
*/
|
package/dist/plugin.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import autotrimPlugin, { defaultTags } from "ventojs/plugins/auto_trim.js";
|
|
3
3
|
import createVentoEnv from "ventojs";
|
|
4
|
+
import { VentoError } from "ventojs/core/errors.js";
|
|
5
|
+
import { styleText } from "node:util";
|
|
4
6
|
import createDebugger from "debug";
|
|
5
7
|
|
|
6
8
|
//#region src/utils/create-vento-tag.ts
|
|
@@ -32,11 +34,74 @@ function createVentoTag(tagInfo) {
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
//#endregion
|
|
35
|
-
//#region src/utils/
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
//#region src/utils/logging.ts
|
|
38
|
+
const debug = {
|
|
39
|
+
main: createDebugger("Eleventy:Vento"),
|
|
40
|
+
get cache() {
|
|
41
|
+
return this.main.extend("Cache");
|
|
42
|
+
},
|
|
43
|
+
get render() {
|
|
44
|
+
return this.main.extend("Render");
|
|
45
|
+
},
|
|
46
|
+
get error() {
|
|
47
|
+
return this.main.extend("Error");
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
function warn(...messages) {
|
|
51
|
+
for (const message of messages) console.error(styleText("gray", "[warning]"), styleText("yellow", message));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/utils/errors.ts
|
|
56
|
+
const LINE_TERMINATOR = /(\r\n?|[\n\u2028\u2029])/;
|
|
57
|
+
var EleventyVentoError = class extends Error {
|
|
58
|
+
constructor(message, context, cause) {
|
|
59
|
+
super(message, { cause });
|
|
60
|
+
this.context = context;
|
|
61
|
+
}
|
|
62
|
+
static async createFromContext(error) {
|
|
63
|
+
const ctx = await error.getContext();
|
|
64
|
+
const err = new this("An unknown error occured processing Vento templates", ctx, error);
|
|
65
|
+
if (!ctx.position || !ctx.file) warn(`A \`${ctx.type}\` was thrown, but the exact position within the source code cannot be obtained`, "Use DEBUG=\"Eleventy:Vento*\" to view raw `ErrorContext` information");
|
|
66
|
+
debug.error("Received `ErrorContext` from Vento: %O", ctx);
|
|
67
|
+
if (ctx.file === void 0) return err;
|
|
68
|
+
err.message = `${ctx.type} in ${ctx.file}`;
|
|
69
|
+
if (ctx.position === void 0 || ctx.source === void 0) return err;
|
|
70
|
+
const sourceLines = codeToLines(ctx.source);
|
|
71
|
+
const [sourceLine, sourceColumn] = locateInCode(sourceLines, ctx.position);
|
|
72
|
+
err.message += `:${sourceLine}:${sourceColumn}:\n\n`;
|
|
73
|
+
const pad = sourceLine.toString().length;
|
|
74
|
+
const indent = " ".repeat(pad);
|
|
75
|
+
for (let line = Math.max(sourceLine - 3, 1); line <= sourceLine; line++) err.message += `${`${line}`.padStart(pad)} │ ${sourceLines[line - 1].trimEnd()}\n`;
|
|
76
|
+
err.message += `${indent} ${" ".repeat(sourceColumn - 1)}^`;
|
|
77
|
+
if (!ctx.code || ctx.line === void 0 || ctx.column === void 0) return err;
|
|
78
|
+
const codelines = codeToLines(ctx.code);
|
|
79
|
+
err.message += `\n\n${indent} | /* ...compiled to... */\n${indent} │ ${codelines[ctx.line - 1].trimEnd()}\n${indent} ${" ".repeat(ctx.column - 1)}^`;
|
|
80
|
+
return err;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Converts a code string to an array of lines
|
|
85
|
+
*/
|
|
86
|
+
function codeToLines(code) {
|
|
87
|
+
const doubleLines = code.split(LINE_TERMINATOR);
|
|
88
|
+
const lines = [];
|
|
89
|
+
for (let i = 0; i < doubleLines.length; i += 2) lines.push(`${doubleLines[i]}${doubleLines[i + 1] ?? ""}`);
|
|
90
|
+
return lines;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Identifies the line/column location from a character index
|
|
94
|
+
*/
|
|
95
|
+
function locateInCode(lines, position) {
|
|
96
|
+
if (position < 0) return [1, 1];
|
|
97
|
+
let index = 0;
|
|
98
|
+
for (const [line, content] of lines.entries()) {
|
|
99
|
+
const { length } = content;
|
|
100
|
+
if (position < index + length) return [line + 1, position - index + 1];
|
|
101
|
+
index += length;
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Positon ${position} is out of bounds for the provided source`);
|
|
104
|
+
}
|
|
40
105
|
|
|
41
106
|
//#endregion
|
|
42
107
|
//#region src/engine.ts
|
|
@@ -81,13 +146,19 @@ function createVentoEngine(options) {
|
|
|
81
146
|
}
|
|
82
147
|
async function getTemplateFunction(source, file, useVentoCache = true) {
|
|
83
148
|
let template = await env.cache.get(file);
|
|
84
|
-
if (template?.source === source)
|
|
85
|
-
|
|
149
|
+
if (template?.source === source) {
|
|
150
|
+
debug.cache("Cache HIT for `%s`, using precompiled template", file);
|
|
151
|
+
return template;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
debug.cache("Cache MISS for `%s`, will compile new template function", file);
|
|
86
155
|
template = env.compile(source, file);
|
|
87
|
-
debugCache(`Cache MISS for \`%s\`, compiled new template; %s\n\n${template}`, file, useVentoCache ? "let Vento cache result" : "defer result caching to Eleventy");
|
|
88
156
|
if (useVentoCache) env.cache.set(file, template);
|
|
157
|
+
return template;
|
|
158
|
+
} catch (error) {
|
|
159
|
+
if (error instanceof VentoError) throw await EleventyVentoError.createFromContext(error);
|
|
160
|
+
throw error;
|
|
89
161
|
}
|
|
90
|
-
return template;
|
|
91
162
|
}
|
|
92
163
|
return {
|
|
93
164
|
cache: env.cache,
|
|
@@ -99,15 +170,20 @@ function createVentoEngine(options) {
|
|
|
99
170
|
};
|
|
100
171
|
}
|
|
101
172
|
async function renderVentoTemplate(template, data, from) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
173
|
+
try {
|
|
174
|
+
debug.render("Rendering `%s`", from);
|
|
175
|
+
const { content } = await template(data);
|
|
176
|
+
return content;
|
|
177
|
+
} catch (error) {
|
|
178
|
+
if (error instanceof VentoError) throw await EleventyVentoError.createFromContext(error);
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
105
181
|
}
|
|
106
182
|
|
|
107
183
|
//#endregion
|
|
108
184
|
//#region src/plugin.ts
|
|
109
185
|
function VentoPlugin(eleventyConfig, userOptions) {
|
|
110
|
-
|
|
186
|
+
debug.main("Initializing eleventy-plugin-vento");
|
|
111
187
|
eleventyConfig.versionCheck(">=3.0.0");
|
|
112
188
|
const options = {
|
|
113
189
|
autotrim: false,
|
|
@@ -118,13 +194,13 @@ function VentoPlugin(eleventyConfig, userOptions) {
|
|
|
118
194
|
ventoOptions: { includes: eleventyConfig.directories.includes },
|
|
119
195
|
...userOptions
|
|
120
196
|
};
|
|
121
|
-
|
|
197
|
+
debug.main("Merged default and user config: %O", options);
|
|
122
198
|
const filters = eleventyConfig.getFilters();
|
|
123
|
-
|
|
199
|
+
debug.main("Reading filters from Eleventy: %o", filters);
|
|
124
200
|
const shortcodes = eleventyConfig.getShortcodes();
|
|
125
|
-
|
|
201
|
+
debug.main("Reading shortcodes from Eleventy: %o", shortcodes);
|
|
126
202
|
const pairedShortcodes = eleventyConfig.getPairedShortcodes();
|
|
127
|
-
|
|
203
|
+
debug.main("Reading paired shortcodes from Eleventy: %o", pairedShortcodes);
|
|
128
204
|
if (options.autotrim) {
|
|
129
205
|
const tagSet = new Set(options.autotrim === true ? ["@vento", "@11ty"] : options.autotrim);
|
|
130
206
|
if (tagSet.has("@vento")) {
|
|
@@ -135,54 +211,54 @@ function VentoPlugin(eleventyConfig, userOptions) {
|
|
|
135
211
|
tagSet.delete("@11ty");
|
|
136
212
|
for (const name in pairedShortcodes) tagSet.add(name);
|
|
137
213
|
}
|
|
138
|
-
|
|
214
|
+
debug.main("Enabled autotrim for tags: %o", tagSet);
|
|
139
215
|
options.plugins.push(autotrimPlugin({ tags: [...tagSet] }));
|
|
140
216
|
}
|
|
141
|
-
|
|
217
|
+
debug.main("Initializing Vento environment");
|
|
142
218
|
const engine = createVentoEngine(options.ventoOptions);
|
|
143
|
-
|
|
219
|
+
debug.main("Loading plugins: %o", options.plugins);
|
|
144
220
|
engine.loadPlugins(options.plugins);
|
|
145
221
|
if (options.filters) {
|
|
146
|
-
|
|
222
|
+
debug.main("Loading filters: %o", filters);
|
|
147
223
|
engine.loadFilters(filters);
|
|
148
224
|
}
|
|
149
225
|
if (options.shortcodes) {
|
|
150
|
-
|
|
226
|
+
debug.main("Loading shortcodes: %o", shortcodes);
|
|
151
227
|
engine.loadShortcodes(shortcodes);
|
|
152
228
|
}
|
|
153
229
|
if (options.pairedShortcodes) {
|
|
154
|
-
|
|
230
|
+
debug.main("Loading paired shortcodes: %o", pairedShortcodes);
|
|
155
231
|
engine.loadPairedShortcodes(pairedShortcodes);
|
|
156
232
|
}
|
|
157
|
-
|
|
233
|
+
debug.main("Registering Vento cache handler on eleventy.beforeWatch event");
|
|
158
234
|
eleventyConfig.on("eleventy.beforeWatch", async (updatedFiles) => {
|
|
159
235
|
for (let file of updatedFiles) {
|
|
160
236
|
file = path.normalize(file);
|
|
161
|
-
|
|
237
|
+
debug.cache("Delete cache entry for %s", file);
|
|
162
238
|
engine.cache.delete(file);
|
|
163
239
|
}
|
|
164
240
|
});
|
|
165
|
-
|
|
241
|
+
debug.main("Registering .vto as a template format");
|
|
166
242
|
eleventyConfig.addTemplateFormats("vto");
|
|
167
|
-
|
|
243
|
+
debug.main("Registering .vto extension with eleventy");
|
|
168
244
|
eleventyConfig.addExtension("vto", {
|
|
169
245
|
outputFileExtension: "html",
|
|
170
246
|
read: true,
|
|
171
247
|
async compile(inputContent, inputPath) {
|
|
172
248
|
inputPath = path.normalize(inputPath);
|
|
173
|
-
|
|
249
|
+
debug.main("Getting template function for `%s`", inputPath);
|
|
174
250
|
const template = await engine.getTemplateFunction(inputContent, inputPath, false);
|
|
175
251
|
return async (data) => await renderVentoTemplate(template, data, inputPath);
|
|
176
252
|
},
|
|
177
253
|
compileOptions: { async permalink(permalinkContent, inputPath) {
|
|
178
254
|
if (typeof permalinkContent !== "string" || !/\{\{\s+.+\s+\}\}/.test(permalinkContent)) return permalinkContent;
|
|
179
255
|
inputPath = "EleventyVentoDynamicPermalink:".concat(path.normalize(inputPath));
|
|
180
|
-
|
|
256
|
+
debug.main("Getting template function for `%s`", inputPath);
|
|
181
257
|
const template = await engine.getTemplateFunction(permalinkContent, inputPath);
|
|
182
258
|
return async (data) => await renderVentoTemplate(template, data, inputPath);
|
|
183
259
|
} }
|
|
184
260
|
});
|
|
185
|
-
|
|
261
|
+
debug.main("eleventy-plugin-vento initialized");
|
|
186
262
|
}
|
|
187
263
|
|
|
188
264
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eleventy-plugin-vento",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"description": "Adds support for the Vento templating language to Eleventy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -37,25 +37,24 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"debug": "4.4.3",
|
|
40
|
-
"ventojs": "2.3.
|
|
40
|
+
"ventojs": "2.3.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"11ty.ts": "0.0.
|
|
43
|
+
"11ty.ts": "0.0.7",
|
|
44
44
|
"@11ty/eleventy": "3.1.2",
|
|
45
45
|
"@changesets/cli": "2.29.8",
|
|
46
|
-
"@eslint/js": "
|
|
46
|
+
"@eslint/js": "10.0.1",
|
|
47
47
|
"@types/debug": "4.1.12",
|
|
48
|
-
"@types/node": "24.
|
|
49
|
-
"eslint": "
|
|
48
|
+
"@types/node": "24.11.0",
|
|
49
|
+
"eslint": "10.0.2",
|
|
50
50
|
"eslint-config-prettier": "10.1.8",
|
|
51
|
-
"eslint-plugin-unicorn": "
|
|
52
|
-
"globals": "17.
|
|
53
|
-
"knip": "5.
|
|
54
|
-
"prettier": "3.
|
|
55
|
-
"tsdown": "0.
|
|
56
|
-
"type-fest": "5.3.1",
|
|
51
|
+
"eslint-plugin-unicorn": "63.0.0",
|
|
52
|
+
"globals": "17.4.0",
|
|
53
|
+
"knip": "5.85.0",
|
|
54
|
+
"prettier": "3.8.1",
|
|
55
|
+
"tsdown": "0.20.3",
|
|
57
56
|
"typescript": "5.9.3",
|
|
58
|
-
"typescript-eslint": "8.
|
|
59
|
-
"vitest": "4.0.
|
|
57
|
+
"typescript-eslint": "8.56.1",
|
|
58
|
+
"vitest": "4.0.18"
|
|
60
59
|
}
|
|
61
60
|
}
|
package/readme.md
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
[](https://github.com/noelforte/eleventy-plugin-vento/actions/workflows/ci.yml)
|
|
5
5
|
[](https://npmjs.com/package/eleventy-plugin-vento)
|
|
6
6
|
[](https://github.com/changesets/changesets/)
|
|
7
|
+
[](https://prettier.io/)
|
|
7
8
|
|
|
8
9
|
An [Eleventy](https://11ty.dev/) plugin that adds support for [Vento](https://vento.js.org/) templates.
|
|
9
10
|
|
|
@@ -20,9 +21,7 @@ An [Eleventy](https://11ty.dev/) plugin that adds support for [Vento](https://ve
|
|
|
20
21
|
|
|
21
22
|
## Installing
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
npm install eleventy-plugin-vento
|
|
25
|
-
```
|
|
24
|
+
This plugin is available [via the `npm` registry](https://www.npmjs.com/package/eleventy-plugin-vento). You may install it via any compatible package manager (`npm`, `pnpm`, `yarn`, direct download, etc).
|
|
26
25
|
|
|
27
26
|
[↑ Return to Top](#contents)
|
|
28
27
|
|
|
@@ -46,7 +45,7 @@ export default function (eleventyConfig) {
|
|
|
46
45
|
|
|
47
46
|
## Plugin Options
|
|
48
47
|
|
|
49
|
-
This plugin ships with default options out of the box, but you can [pass an options object](https://www.11ty.dev/docs/
|
|
48
|
+
This plugin ships with default options out of the box, but you can [pass an options object](https://www.11ty.dev/docs/create-plugin/#plugin-configuration-options) to your `addPlugin` call to configure things further. The below example shows the configurable options as well as their defaults.
|
|
50
49
|
|
|
51
50
|
```js
|
|
52
51
|
import { VentoPlugin } from 'eleventy-plugin-vento';
|
|
@@ -232,9 +231,10 @@ Vento: See [Auto Trim Plugin](https://vento.js.org/plugins/auto-trim/).
|
|
|
232
231
|
|
|
233
232
|
Like Eleventy, this plugin uses the [`debug`](https://www.npmjs.com/package/debug) package to handle verbose logging. The following `DEBUG` namespaces are implemented:
|
|
234
233
|
|
|
235
|
-
- `Eleventy:Vento` - Logs initial setup of the plugin, loading features, pre-page compile setup steps (like changing `page` and `eleventy` objects)
|
|
234
|
+
- `Eleventy:Vento` - Logs initial setup of the plugin, loading features, pre-page compile setup steps (like changing `page` and `eleventy` objects).
|
|
236
235
|
- `Eleventy:Vento:Cache` - Logs updates to Vento's own internal cache, which is used in tandem with Eleventy's cache.
|
|
237
|
-
- `Eleventy:Vento:Render` - Logs when templates are rendered
|
|
236
|
+
- `Eleventy:Vento:Render` - Logs when templates are rendered.
|
|
237
|
+
- `Eleventy:Vento:Error` - Logs extra debugging information when errors occur.
|
|
238
238
|
|
|
239
239
|
Because it is a child of the `Eleventy:` namespace, the following command will include output from this plugin as well:
|
|
240
240
|
|