Skip to content

nkronlage/webpack-single-page-boilerplate

 
 

Repository files navigation

Webpack Single Page Boilerplate

A boilerplate for a single page app using webpack

Build Status Dependency Status

Why should I use it

So far, this is the best way I found to build files like index.html into webpack. This boilerplate handles Javascript, CSS and HTML bundling using only webpack.

Usage

The general directory structure is:

├── assets/
│   └── image
│       └── favicon.png
├── index.html
├── package.json
├── environment.json
├── plugins/
│   └── html-plugin.js
├── README.md
├── scripts/
│   └── index.js
├── styles/
│   └── index.less
└── webpack.config.js
  • Your javascript entry point is scripts/index.js
  • Your style entry point is styles/index.less
  • 'environment.json' file provides optional environment variable settings, but you can delete it if you don't need it.
  • The plugins/html-plugin.js file is better explained on the About section, with the html-parser-plugin plugin.

There's a hack to build HTML files, replacing the src and href tags related to images into their corresponding file in dist directory. This way, a index.html file that looks like this:

<!DOCTYPE html>
<html>
  <head>
    <title>Sample App</title>
    <meta charset="utf-8"/>
    <link href="!assets/image/favicon.png" rel="icon"/>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <script src="script.js"></script>
  </body>
</html>

Becomes this:

<!DOCTYPE html>
<html>
  <head>
    <title>Sample App</title>
    <meta charset="utf-8">
    <link href="84eafba88857e5fd2e85d63beaf3fb31.png" rel="icon">
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <script src="script.js"></script>
  </body>
</html>

Notice that the favicon.png file was replaced with 84eafba88857e5fd2e85d63beaf3fb31.png. indexhtml-webpack-plugin parses your index.html content and properly replace it on your dist/index.html.

About

This boilerplate includes the following loaders:

  • babel-loader: Enable ES6 features.
  • file-loader: Call require for binary files.
  • img-loader: Optimize image compression.
  • json-loader: Call require for json files.
  • less-loader: Style your pages with less.
  • style-loader: Add exports of a module as style to DOM.

It also includes the following plugins:

  • indexhtml-webpack-plugin: Parses your html files content and build them.
  • extract-text-webpack-plugin: Extract css text from bundled styles.
  • html-parser-plugin: Custom experimental plugin to enable html parsing on webpack. It is used to emit a index.html file along with it's images.

License

This code is released under CC0 (Public Domain)

About

Boilerplate for a single page app using webpack

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 83.8%
  • HTML 16.2%