Configuration
Here's how the bundler plugin is configured. The configuration is identical for both Metalsmith and Eleventy:
Metalsmith (metalsmith.js):
import componentDependencyBundler from 'metalsmith-bundled-components';
metalsmith
.use(componentDependencyBundler({
basePath: 'lib/layouts/components/_partials',
sectionsPath: 'lib/layouts/components/sections',
mainCSSEntry: 'lib/assets/main.css',
mainJSEntry: 'lib/assets/main.js',
cssDest: 'assets/main.css',
jsDest: 'assets/main.js',
minifyOutput: isProduction,
postcss: {
enabled: true,
plugins: [
stylelint(),
postcssImport({
path: ['lib/assets', 'lib/assets/styles']
}),
autoprefixer(),
cssnano({ preset: 'default' })
]
}
}))
Eleventy (eleventy.config.js):
import componentsBundler from 'eleventy-plugin-components-bundler';
export default function(eleventyConfig) {
eleventyConfig.addPlugin(componentsBundler, {
basePath: 'lib/layouts/components/_partials',
sectionsPath: 'lib/layouts/components/sections',
mainCSSEntry: 'lib/assets/main.css',
mainJSEntry: 'lib/assets/main.js',
cssDest: 'assets/main.css',
jsDest: 'assets/main.js',
minifyOutput: process.env.NODE_ENV === 'production',
postcss: {
enabled: true,
plugins: [
stylelint(),
postcssImport({
path: ['lib/assets', 'lib/assets/styles']
}),
autoprefixer(),
cssnano({ preset: 'default' })
]
}
});
}
Key configuration points:
basePath: Where to find partial componentssectionsPath: Where to find section componentsmainCSSEntry/mainJSEntry: Global styles/scripts included on every pagecssDest/jsDest: Where to output bundled filesminifyOutput: Enable minification in productionpostcss: PostCSS configuration