项目作者: clenemt

项目描述 :
A barebone Eleventy and Webpack boilerplate 🎈
高级语言: JavaScript
项目地址: git://github.com/clenemt/eleventy-webpack.git
创建时间: 2020-05-14T15:25:37Z
项目社区:https://github.com/clenemt/eleventy-webpack

开源协议:MIT License

下载


eleventy-webpack :balloon:

A barebone eleventy and webpack template. Fork and go.

Netlify Status

Features

  • :fire: Barebone 11ty (literally :scream:)
  • :zap: Fast build with per env configs (babel-env, postcss-preset-env, webpack…)
  • .js (ES6, Babel, Polyfills)
  • .css (Sass, PostCSS, Autoprefixer)
  • :white_check_mark: Optimized for production (source maps, headers, minified code…)
  • :camera_flash: Responsive images and cached remote images (@11ty/eleventy-img)
  • :package: SVG icon sprite generation
  • :robot: SEO metadata and Open Graph tags
  • :link: Safe external links (noopener and noreferrer)
  • :memo: Useful shortcodes and filters (date, markdown, sprite icons, responsive images…)
  • :shipit: Neat error overlay (eleventy-plugin-error-overlay)
  • :art: Prettier for formatting

Live demo https://eleventy-webpack.netlify.app

Usage

First install the dependencies:

  1. npm install

Then you can:

Command Description
npm run start Run your website on http://localhost:8080
npm run build Build your production website inside /_site
npm run format Run prettier on all filles except /_site
npm run analyze Output info on your bundle size

Make sure you use the correct node.js version:

  1. # with bash nvm
  2. nvm use `cat .nvmrc`
  3. # with windows nvm
  4. nvm use $(cat .nvmrc)
  5. # or just install the version specified inside `.nvmrc`

Webpack

A very simple webpack.config.js is included. Feel free to change it.

Shortcodes

All shortcodes can be used inside .md or .njk files.


icon



Any SVG added to src/assets/icons is bundled into a symbol sprite file and made available through this shortcode.
html <!-- Assuming `src/assets/icons/github.svg` exist --> {% icon "github" %} Github icon <!-- Will be rendered as --> <svg class="icon icon--github" role="img" aria-hidden="true"> <use xlink:href="/assets/images/sprite.svg#github"></use> </svg>
_

image



Creates a WebP version of the image and the corresponding optimized JPEG / PNG. Images will be created in multiple sizes. See utils/shortcodes.js for default values.

html <!-- Assuming `src/assets/images/image.jpeg` of width 330px exist --> {% image "image.jpeg", "Image alt" %} <!-- Will be rendered as --> <picture> <source type="image/webp" srcset="/assets/images/678868de-320.webp 320w, /assets/images/678868de.webp 330w" sizes="90vw"> <source type="image/png" srcset="/assets/images/678868de-320.png 320w, /assets/images/678868de.png 330w" sizes="90vw"> <img loading="lazy" src="/assets/images/678868de.png" alt="Image alt" width="330" height="580"> </picture> <!-- If a title is passed the shortcode will output a <figure> with <figcaption> --> {% image "image.jpeg", "Image alt", "Image title" %} <!-- Will be rendered as --> <figure> <picture> <source type="image/webp" srcset="/assets/images/678868de-320.webp 320w, /assets/images/678868de.webp 330w" sizes="90vw"> <source type="image/png" srcset="/assets/images/678868de-320.png 320w, /assets/images/678868de.png 330w" sizes="90vw"> <img loading="lazy" src="/assets/images/678868de.png" alt="Image alt" width="330" height="580"> </picture> <figcaption>Image title</figcaption> </figure> <!-- Additional options --> {% image [100,100], "image.jpeg", "Image alt", "Image title", "my-class", false, "90vw" %} <!-- Will be rendered as --> <figure class="fig-my-class"> <picture> <source type="image/webp" srcset="..." sizes="90vw"> <source type="image/png" srcset="..." sizes="90vw"> <img class="img-my-class" loading="eager" src="..." alt="Image alt" width="100" height="100"> </picture> <figcaption>Image title</figcaption> </figure>
_

markdown



Embed markdown easily.

html {% markdown %} Let's you use **Markdown** like _this_. Or with includes {%- include 'content.md' -%}. {% endmarkdown %}
_

Filters

All filters can be used inside .md or .njk files.


format



Format the passed date with date-fns:

html <!-- Assuming page.date is a javascript date --> {{ page.date | format("yyyy") }} <!-- Will be rendered as --> 2020
_

formatISO



Format the passed date according to ISO format:

html <!-- Assuming page.date is a javascript date --> {{ page.date | formatISO }} <!-- Will be rendered as --> 2020-09-18T19:00:52Z
_

markdown



Parse the passed string with markdown:

html <!-- Assuming page.title is `# My header` --> {{ page.title | markdown }} <!-- Will be rendered as --> <h1>My header</h1>
_

Thanks