html5 gulp boilerplate
getting started
First create a repo for your project on github, then clone the html5-gulp-boilerplate project, into 'project-name'
git clone https://github.com/Paul-Browne/html5-gulp-boilerplate.git project-name
Now you'll want to change the origin of remote (where you push to, and pull from) to the github url of the 'project-name' repo
git remote set-url origin https://github.com/user-name/project-name.git
change user-name
and project-name
to whatever your github user name is, and whatever you named your new project.
Run the command git remote -v
to check that you entered the name correctly.
You'll probably want to change a few fields in the package.json, such as name
, repository url
, author
etc.
Now all thats left for you to do is commit the changes to the package.json, and push to master
git add .
git commit -m 'updated package.json'
git push
Prerequisite
This boilerplate includes image resizing and optimization, which requires the imagemagick and graphicsmagick libraries to be installed on your system. For Mac you can install these via brew
brew install imagemagick --build-from-source
brew install graphicsmagick --build-from-source
Instalation
from within the project directory run
npm install
npm run build
This will first download all the dependencies and then build the project. Simple. Open localhost:8888 and you should see 'Hello world'
Other commands arenpm run clean
- which will delete all files in /dist and /dev, not including images,npm run clean-all
- which will delete all files in /dist and /dev, including images andnpm pretty
- which will prettify the contents of the /src
directory.
Project structure
project-name
+ dev # compiled from src, for development
+ dist # compiled from src, for production
+ node_modules
- src
+ css
+ icons # favicon icons + android manifest etc
+ images
+ js
+ scss # optional, use one, both or neither
+ less # optional, use one, both or neither
index.html
.editorconfig
.env # for ssl localhost
.gitignore
.jsbeautifyrc # options for prettifying
gulpfile.js
package.json
Features
Server
The boilerplate comes with a fully loaded express server for all your developement needs, including https, http2 and gzip compression.
The node run build
command will fire up 2 servers listening to localhost:8888 and serving the /dist
directory, and another one listening to localhost:8887 and serving the /dev
directory
If you have https://localhost then express will look for the certificate and key in the .env
file in the root directory of the project, and should look something like this
SSL_CRT_PATH = "/.ssl/localhost.crt"
SSL_KEY_PATH = "/.ssl/localhost.key"
Mac users can setup ssl for localhost with these 3 simple commands
If you don't have ssl setup for localhost then express will fallback to http://localhost, without ssl and http2, but still with gzip compression.
The /dist
directory will contain all the production ready code, minified & combined html, css and js files.
The /dev
directory contains the same code, only prettified and from the source files (before combining) making development easier. Images are the same in both directories.
Image optimization
All images that are placed in the /src/images
directory will be optimized before they are copied to the /dist
and /dev
directories.
Image resizing
All images that are placed in the /src/images
directory will also be resized to 400, 800, 1200, 1600 and 2400px wide, and placed in a sub-directory with the name of the size. eg /images/400/sunrise.jpg
Images will not be upscaled, meaning an image of 3000 x 2000px will be resized to all of the above sizes, but an image of 960 x 640px will only be resized to 400 and 800. All resized images are also optimized.
Minifying and uglifying assets
html, css and javascript will be minified, javascript will also be uglified before beign copied to /dist
Prettifying assets
html, css and javascript will be prettified before being copied to /dev
File combining
When marked, css and javascript can be combined into a single file, like so
<!-- build:css css/global.css -->
<link href="css/normalize.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
<!-- endbuild-->
This will result in the following markup in /dist
In /dev
the original source files will be used.
<link href="css/global.css" rel="stylesheet">
Preprocessors
scss and less files will be converted to css, this css will also be minified and can be sourced for file combination if required.
Autoprefixing
css properties and values will be autoprefixed so they work on older browsers, current settings are for browsers with greater than 1% global usage.
for example
.example {
display: flex;
flex-direction: column;
}
will become
.example {
display: -webkit-box;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
flex-direction: column;
}
File caching
The build process will also launch a watch
process, to re-build the /dev
and /dist
directories whenever a file is saved.
This process will only trigger a build for files that have changed. Eg. images wont be reprocessed if a html file is changed.
Favicons, apple, android and windows icons
In the /icons
directory there are placeholder icons etc. To build your own from source I would strongly recommend realfavicongenerator.net
Social meta
The index.html includes all the meta for good social media sharing (twitter and facebook). You just need to change the values
Go and checkout html5-gulp-boilerplate project over at github