-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
eleventyWebcPlugin.js
67 lines (54 loc) · 2.2 KB
/
eleventyWebcPlugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const eleventyBundlePlugin = require("@11ty/eleventy-plugin-bundle");
const pkg = require("./package.json");
const templatePlugin = require("./src/eleventyWebcTemplate.js");
const transformPlugin = require("./src/eleventyWebcTransform.js");
module.exports = function(eleventyConfig, options = {}) {
try {
eleventyConfig.versionCheck(pkg["11ty"].compatibility);
} catch(e) {
console.log( `WARN: Eleventy Plugin (${pkg.name}) Compatibility: ${e.message}` );
}
// Deprecated: this lives in @11ty/eleventy-plugin-bundle now
let filters = Object.assign({
css: "webcGetCss",
js: "webcGetJs",
}, options.filters);
options = Object.assign({
components: "_components/**/*.webc", // glob for no-import global components
scopedHelpers: ["css", "js", "html"],
useTransform: false, // global transform
transformData: {}, // extra global data for transforms specifically
}, options);
options.bundlePluginOptions = Object.assign({
hoistDuplicateBundlesFor: ["css", "js"]
}, options.bundlePluginOptions);
// Deprecated: this lives in @11ty/eleventy-plugin-bundle now
options.filters = filters;
if(options.components) {
let components = options.components;
if(!Array.isArray(components)) {
components = [components];
}
for(let entry of components) {
if(entry.startsWith("npm:")) {
continue;
}
eleventyConfig.addWatchTarget(entry);
// Opt-out of Eleventy to process components
// Note that Eleventy’s default ignores already have _includes/**
// This will cause component files outside of _includes to not be watched: https://github.com/11ty/eleventy-plugin-webc/issues/29
// Fixed in @11ty/eleventy@2.0.0-canary.18: https://github.com/11ty/eleventy/issues/893
eleventyConfig.ignores.add(entry);
}
}
// TODO Remove this when @11ty/eleventy-plugin-bundle is moved to core.
// If the bundle plugin has not been added, we add it here:
let bundlePlugin = eleventyConfig.plugins.find(entry => entry.plugin.eleventyPackage === "@11ty/eleventy-plugin-bundle");
if(!bundlePlugin) {
eleventyConfig.addPlugin(eleventyBundlePlugin, options.bundlePluginOptions);
}
templatePlugin(eleventyConfig, options);
if(options.useTransform) {
transformPlugin(eleventyConfig, options);
}
}