diff --git a/README.md b/README.md index 40e7ede351..0fef4fa1a5 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ HTML5 Boilerplate is a professional front-end template for building fast, robust, and adaptable web apps or sites. -This project is the product of years of iterative development and +This project is the product of over 10 years of iterative development and community knowledge. It does not impose a specific development philosophy or framework, so you're free to architect your code in the way that you want. @@ -18,13 +18,16 @@ way that you want. * Source: [https://github.com/h5bp/html5-boilerplate](https://github.com/h5bp/html5-boilerplate) * Twitter: [@h5bp](https://twitter.com/h5bp) - ## Quick start Choose one of the following options: * Download the latest stable release from - [html5boilerplate.com](https://html5boilerplate.com/). This zip file is a snapshot of the `dist` folder. On Windows, Mac and from the file manager on Linux unzipping this folder will output to a folder named something like `html5-boilerplate_v7.3.0`. From the command line will need to create a folder and unzip the contents into that folder. + [html5boilerplate.com](https://html5boilerplate.com/). This zip file is a + snapshot of the `dist` folder. On Windows, Mac and from the file manager on + Linux unzipping this folder will output to a folder named something like + `html5-boilerplate_v7.3.0`. From the command line will need to create a + folder and unzip the contents into that folder. ```bash mkdir html5-boilerplate @@ -34,21 +37,44 @@ Choose one of the following options: * Clone the git repo — `git clone https://github.com/h5bp/html5-boilerplate.git` - and checkout the [tagged release](https://github.com/h5bp/html5-boilerplate/releases) - you'd like to use. The `dist` folder represents the latest version of the project for end users. -* Install with [npm](https://www.npmjs.com/): `npm install html5-boilerplate` or [yarn](https://yarnpkg.com/): `yarn add html5-boilerplate`. The resulting `node_modules/html5-boilerplate/dist` folder represents the latest version of the project for end users. Depending on what you want to use and how you want to use it, you may have to copy and paste the contents of that folder into your project directory. + you'd like to use. The `dist` folder represents the latest version of the + project for end users. + +* Install with [npm](https://www.npmjs.com/): `npm install html5-boilerplate` + or [yarn](https://yarnpkg.com/): `yarn add html5-boilerplate`. The resulting + `node_modules/html5-boilerplate/dist` folder represents the latest version of + the project for end users. Depending on what you want to use and how you want + to use it, you may have to copy and paste the contents of that folder into + your project directory. + +* Using our new [create-html5-boilerplate](https://github.com/h5bp/create-html5-boilerplate) + project, instantly fetch the latest npm published package (or any version + available on npm) with `npx`, `npm init` or `yarn create` without having to + install any dependencies. Running the following `npx` command installs the + latest version into a folder called `new-site` + + ``` + npx create-html5-boilerplate new-site + cd new-site + npm install + npm start + ``` ## Features -* HTML5 ready. Use the new elements with confidence. +* A finely-tuned starter template. Reap the benefits of 10 years of analysis + research and experimentation by over 200 contributors. * Designed with progressive enhancement in mind. * Includes: * [`Normalize.css`](https://necolas.github.com/normalize.css/) for CSS normalizations and common bug fixes - * [`jQuery`](https://jquery.com/) via CDN with [SRI Hash](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) and a local fallback * A custom build of [`Modernizr`](https://modernizr.com/) for feature detection * [`Apache Server Configs`](https://github.com/h5bp/server-configs-apache) that improve the web site's performance and security +* Placeholder Open Graph elements and attributes. +* An example package.json file with [Parcel](https://parceljs.org/) commands + built in to jumpstart application development * Placeholder CSS Media Queries. * Useful CSS helper classes. * Default print styles, performance optimized. @@ -56,8 +82,7 @@ Choose one of the following options: * Protection against any stray `console` statements causing JavaScript errors in older browsers. * "Delete-key friendly." Easy to strip out parts you don't need. -* Extensive inline and accompanying documentation. - +* Extensive documentation. ## Browser support @@ -72,20 +97,21 @@ Choose one of the following options: just that we'll ensure compatibility with the ones mentioned above.* If you need legacy browser support you can use [HTML5 Boilerplate v6](https://github.com/h5bp/html5-boilerplate/releases/tag/6.1.0) (IE9/IE10) -or [HTML5 Boilerplate v5](https://github.com/h5bp/html5-boilerplate/releases/tag/5.3.0) (IE 8). They are no longer actively developed. +or [HTML5 Boilerplate v5](https://github.com/h5bp/html5-boilerplate/releases/tag/5.3.0) +(IE 8). They are no longer actively developed. ## Documentation -Take a look at the [documentation table of contents](dist/doc/TOC.md). -This documentation is bundled with the project which makes it -available for offline reading and provides a useful starting point for -any documentation you want to write about your project. +Take a look at the [documentation table of contents](dist/doc/TOC.md). This +documentation is bundled with the project which makes it available for offline +reading and provides a useful starting point for any documentation you want to +write about your project. ## Contributing -Hundreds of developers have helped to make the HTML5 Boilerplate. Anyone is welcome to [contribute](.github/CONTRIBUTING.md), -however, if you decide to get involved, please take a moment to review -the [guidelines](.github/CONTRIBUTING.md): +Hundreds of developers have helped to make the HTML5 Boilerplate. Anyone is +welcome to [contribute](.github/CONTRIBUTING.md), however, if you decide to get +involved, please take a moment to review the [guidelines](.github/CONTRIBUTING.md): * [Bug reports](.github/CONTRIBUTING.md#bugs) * [Feature requests](.github/CONTRIBUTING.md#features) diff --git a/dist/.htaccess b/dist/.htaccess index 12a2e0ac14..2a2bacf49a 100644 --- a/dist/.htaccess +++ b/dist/.htaccess @@ -1,4 +1,4 @@ -# Apache Server Configs v4.0.0 | MIT License +# Apache Server Configs v3.2.1 | MIT License # https://github.com/h5bp/server-configs-apache # (!) Using `.htaccess` files slows down Apache, therefore, if you have @@ -21,13 +21,6 @@ # https://enable-cors.org/ # https://www.w3.org/TR/cors/ -# (!) Do not use this without understanding the consequences. -# This will permit access from any other website. -# Instead of using this file, consider using a specific rule such as -# allowing access based on (sub)domain: -# -# Header set Access-Control-Allow-Origin "subdomain.example.com" - # # Header set Access-Control-Allow-Origin "*" # @@ -43,7 +36,7 @@ - + SetEnvIf Origin ":" IS_CORS Header set Access-Control-Allow-Origin "*" env=IS_CORS @@ -70,9 +63,10 @@ # Allow cross-origin access to the timing information for all resources. # -# If a resource isn't served with a `Timing-Allow-Origin` header that would -# allow its timing information to be shared with the document, some of the -# attributes of the `PerformanceResourceTiming` object will be set to zero. +# If a resource isn't served with a `Timing-Allow-Origin` header that +# would allow its timing information to be shared with the document, +# some of the attributes of the `PerformanceResourceTiming` object will +# be set to zero. # # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Timing-Allow-Origin # https://www.w3.org/TR/resource-timing/ @@ -102,8 +96,8 @@ ErrorDocument 404 /404.html # Disable the pattern matching based on filenames. # -# This setting prevents Apache from returning a 404 error as the result of a -# rewrite when the directory with the same name does not exist. +# This setting prevents Apache from returning a 404 error as the result +# of a rewrite when the directory with the same name does not exist. # # https://httpd.apache.org/docs/current/content-negotiation.html#multiviews @@ -118,21 +112,21 @@ Options -MultiViews # ---------------------------------------------------------------------- # Force Internet Explorer 8/9/10 to render pages in the highest mode -# available in various cases when it may not. +# available in the various cases when it may not. # # https://hsivonen.fi/doctype/#ie8 # # (!) Starting with Internet Explorer 11, document modes are deprecated. -# If your business still relies on older web apps and services that were -# designed for older versions of Internet Explorer, you might want to -# consider enabling `Enterprise Mode` throughout your company. +# If your business still relies on older web apps and services that were +# designed for older versions of Internet Explorer, you might want to +# consider enabling `Enterprise Mode` throughout your company. # # https://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode # https://blogs.msdn.microsoft.com/ie/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11/ # https://msdn.microsoft.com/en-us/library/ff955275.aspx - Header always set X-UA-Compatible "IE=edge" "expr=%{CONTENT_TYPE} =~ m#text/html#i" + Header set X-UA-Compatible "IE=edge" "expr=%{CONTENT_TYPE} =~ m#text/html#i" # ###################################################################### @@ -188,8 +182,8 @@ Options -MultiViews AddType video/webm webm AddType video/x-flv flv - # Serving `.ico` image files with a different media type prevents - # Internet Explorer from displaying them as images: + # Serving `.ico` image files with a different media type + # prevents Internet Explorer from displaying them as images: # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee AddType image/x-icon cur ico @@ -230,8 +224,8 @@ Options -MultiViews # | Character encodings | # ---------------------------------------------------------------------- -# Serve all resources labeled as `text/html` or `text/plain` with the media type -# `charset` parameter set to `UTF-8`. +# Serve all resources labeled as `text/html` or `text/plain` +# with the media type `charset` parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset @@ -239,8 +233,8 @@ AddDefaultCharset utf-8 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Serve the following file types with the media type `charset` parameter set to -# `UTF-8`. +# Serve the following file types with the media type `charset` +# parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset @@ -273,8 +267,8 @@ AddDefaultCharset utf-8 # | Rewrite engine | # ---------------------------------------------------------------------- -# (1) Turn on the rewrite engine (this is necessary in order for the -# `RewriteRule` directives to work). +# (1) Turn on the rewrite engine (this is necessary in order for +# the `RewriteRule` directives to work). # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine # @@ -282,10 +276,10 @@ AddDefaultCharset utf-8 # # https://httpd.apache.org/docs/current/mod/core.html#options # -# (3) If your web host doesn't allow the `FollowSymlinks` option, you need to -# comment it out or remove it, and then uncomment the -# `Options +SymLinksIfOwnerMatch` line (4), but be aware of the performance -# impact. +# (3) If your web host doesn't allow the `FollowSymlinks` option, +# you need to comment it out or remove it, and then uncomment +# the `Options +SymLinksIfOwnerMatch` line (4), but be aware +# of the performance impact. # # https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks # @@ -294,10 +288,14 @@ AddDefaultCharset utf-8 # https://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase # -# (5) Depending on how your server is set up, you may also need to use the -# `RewriteOptions` directive to enable some options for the rewrite engine. +# (5) Depending on how your server is set up, you may also need to +# use the `RewriteOptions` directive to enable some options for +# the rewrite engine. # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions +# +# (6) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the +# appropriate schema automatically (http or https). @@ -316,6 +314,12 @@ AddDefaultCharset utf-8 # (5) # RewriteOptions + # (6) + RewriteCond %{HTTPS} =on + RewriteRule ^ - [env=proto:https] + RewriteCond %{HTTPS} !=on + RewriteRule ^ - [env=proto:http] + # ---------------------------------------------------------------------- @@ -326,9 +330,10 @@ AddDefaultCharset utf-8 # # https://wiki.apache.org/httpd/RewriteHTTPToHTTPS -# (1) If you're using cPanel AutoSSL or the Let's Encrypt webroot method it -# will fail to validate the certificate if validation requests are -# redirected to HTTPS. Turn on the condition(s) you need. +# (1) If you're using cPanel AutoSSL or the Let's Encrypt webroot +# method it will fail to validate the certificate if validation +# requests are redirected to HTTPS. Turn on the condition(s) +# you need. # # https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml # https://tools.ietf.org/html/draft-ietf-acme-acme-12 @@ -349,39 +354,27 @@ AddDefaultCharset utf-8 # Rewrite www.example.com → example.com -# The same content should never be available under two different URLs, -# especially not with and without `www.` at the beginning. -# This can cause SEO problems (duplicate content), and therefore, you should -# choose one of the alternatives and redirect the other one. +# The same content should never be available under two different +# URLs, especially not with and without `www.` at the beginning. +# This can cause SEO problems (duplicate content), and therefore, +# you should choose one of the alternatives and redirect the other +# one. # # (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! -# (1) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the -# appropriate schema automatically (http or https). -# -# (2) The rule assumes by default that both HTTP and HTTPS environments are -# available for redirection. -# If your SSL certificate could not handle one of the domains used during -# redirection, you should turn the condition on. +# (1) The rule assumes by default that both HTTP and HTTPS +# environments are available for redirection. +# If your SSL certificate could not handle one of the domains +# used during redirection, you should turn the condition on. # # https://github.com/h5bp/server-configs-apache/issues/52 - RewriteEngine On - # (1) - RewriteCond %{HTTPS} =on - RewriteRule ^ - [E=PROTO:https] - RewriteCond %{HTTPS} !=on - RewriteRule ^ - [E=PROTO:http] - - # (2) # RewriteCond %{HTTPS} !=on - RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L] - # ---------------------------------------------------------------------- @@ -390,20 +383,18 @@ AddDefaultCharset utf-8 # Rewrite example.com → www.example.com -# The same content should never be available under two different URLs, -# especially not with and without `www.` at the beginning. -# This can cause SEO problems (duplicate content), and therefore, you should -# choose one of the alternatives and redirect the other one. +# The same content should never be available under two different +# URLs, especially not with and without `www.` at the beginning. +# This can cause SEO problems (duplicate content), and therefore, +# you should choose one of the alternatives and redirect the other +# one. # # (!) NEVER USE BOTH WWW-RELATED RULES AT THE SAME TIME! -# (1) Set %{ENV:PROTO} variable, to allow rewrites to redirect with the -# appropriate schema automatically (http or https). -# -# (2) The rule assumes by default that both HTTP and HTTPS environments are -# available for redirection. -# If your SSL certificate could not handle one of the domains used during -# redirection, you should turn the condition on. +# (1) The rule assumes by default that both HTTP and HTTPS +# environments are available for redirection. +# If your SSL certificate could not handle one of the domains +# used during redirection, you should turn the condition on. # # https://github.com/h5bp/server-configs-apache/issues/52 @@ -411,23 +402,13 @@ AddDefaultCharset utf-8 # subdomains for certain parts of your website. # - # RewriteEngine On - # # (1) -# RewriteCond %{HTTPS} =on -# RewriteRule ^ - [E=PROTO:https] -# RewriteCond %{HTTPS} !=on -# RewriteRule ^ - [E=PROTO:http] - -# # (2) # # RewriteCond %{HTTPS} !=on - # RewriteCond %{HTTP_HOST} !^www\. [NC] # RewriteCond %{SERVER_ADDR} !=127.0.0.1 # RewriteCond %{SERVER_ADDR} !=::1 # RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - # # ###################################################################### @@ -435,32 +416,33 @@ AddDefaultCharset utf-8 # ###################################################################### # ---------------------------------------------------------------------- -# | Frame Options | +# | Clickjacking | # ---------------------------------------------------------------------- # Protect website against clickjacking. # -# The example below sends the `X-Frame-Options` response header with the value -# `DENY`, informing browsers not to display the content of the web page in any -# frame. +# The example below sends the `X-Frame-Options` response header with +# the value `DENY`, informing browsers not to display the content of +# the web page in any frame. # -# This might not be the best setting for everyone. You should read about the -# other two possible values the `X-Frame-Options` header field can have: -# `SAMEORIGIN` and `ALLOW-FROM`. +# This might not be the best setting for everyone. You should read +# about the other two possible values the `X-Frame-Options` header +# field can have: `SAMEORIGIN` and `ALLOW-FROM`. # https://tools.ietf.org/html/rfc7034#section-2.1. # -# Keep in mind that while you could send the `X-Frame-Options` header for all -# of your website's pages, this has the potential downside that it forbids even -# non-malicious framing of your content (e.g.: when users visit your website -# using a Google Image Search results page). +# Keep in mind that while you could send the `X-Frame-Options` header +# for all of your website’s pages, this has the potential downside that +# it forbids even non-malicious framing of your content (e.g.: when +# users visit your website using a Google Image Search results page). # -# Nonetheless, you should ensure that you send the `X-Frame-Options` header for -# all pages that allow a user to make a state-changing operation (e.g: pages -# that contain one-click purchase links, checkout or bank-transfer confirmation -# pages, pages that make permanent configuration changes, etc.). +# Nonetheless, you should ensure that you send the `X-Frame-Options` +# header for all pages that allow a user to make a state changing +# operation (e.g: pages that contain one-click purchase links, checkout +# or bank-transfer confirmation pages, pages that make permanent +# configuration changes, etc.). # -# Sending the `X-Frame-Options` header can also protect your website against -# more than just clickjacking attacks. +# Sending the `X-Frame-Options` header can also protect your website +# against more than just clickjacking attacks: # https://cure53.de/xfo-clickjacking.pdf. # # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options @@ -469,7 +451,7 @@ AddDefaultCharset utf-8 # https://www.owasp.org/index.php/Clickjacking # -# Header always set X-Frame-Options "DENY" "expr=%{CONTENT_TYPE} =~ m#text/html#i" +# Header set X-Frame-Options "DENY" "expr=%{CONTENT_TYPE} =~ m#text/html#i" # # ---------------------------------------------------------------------- @@ -479,60 +461,54 @@ AddDefaultCharset utf-8 # Mitigate the risk of cross-site scripting and other content-injection # attacks. # -# This can be done by setting a `Content Security Policy` which whitelists -# trusted sources of content for your website. +# This can be done by setting a `Content Security Policy` which +# whitelists trusted sources of content for your website. # -# There is no policy that fits all websites, you will have to modify the -# `Content-Security-Policy` directives in the example depending on your needs. +# There is no policy that fits all websites, you will have to modify +# the `Content-Security-Policy` directives in the example below depending +# on your needs. # # The example policy below aims to: # -# (1) Restrict all fetches by default to the origin of the current website by -# setting the `default-src` directive to `'self'` - which acts as a +# (1) Restrict all fetches by default to the origin of the current website +# by setting the `default-src` directive to `'self'` - which acts as a # fallback to all "Fetch directives" (https://developer.mozilla.org/en-US/docs/Glossary/Fetch_directive). # # This is convenient as you do not have to specify all Fetch directives # that apply to your site, for example: # `connect-src 'self'; font-src 'self'; script-src 'self'; style-src 'self'`, etc. # -# This restriction also means that you must explicitly define from which -# site(s) your website is allowed to load resources from. +# This restriction also means that you must explicitly define from +# which site(s) your website is allowed to load resources from. # -# (2) The `` element is not allowed on the website. This is to prevent -# attackers from changing the locations of resources loaded from relative -# URLs. +# (2) The `` element is not allowed on the website. This is to +# prevent attackers from changing the locations of resources loaded +# from relative URLs. # -# If you want to use the `` element, then `base-uri 'self'` can be -# used instead. +# If you want to use the `` element, then `base-uri 'self'` +# can be used instead. # -# (3) Form submissions are only allowed from the current website by setting: -# `form-action 'self'`. +# (3) Form submissions are only allowed from the current website by +# setting: `form-action 'self'`. # -# (4) Prevents all websites (including your own) from embedding your webpages -# within e.g. the `