olmesm / html-includes

👭 HTML compilation with partial includes and minification

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HTML Includes

Commandline HTML compilation with partial includes. Useful for super quick templating, or perhaps bundling things into an iframe.

"Aren't there a million of these?"

Yes. However, they all miss at least one of the following requirements:

  • No webpack necessary
  • Glob folder support
  • Watch
  • Relative paths
  • Nested includes
  • Filetypes other than .html, e.g. .js
  • Minification
  • Saving compiled files with ignoreable filenames
  • Passing parameters to includes, like props to a component

Install

npm i --save-dev html-includes

Add the script into your package.json along the lines of:

"scripts": {
  "compile": "html-includes --src src --dest dist",
  "compile:min": "html-includes --src src --dest dist --minify"
},

See options below for more options.

Run

npm run compile

Use

There is an example project here with more features but put simply, here is how you'd use the script parameters above:

src/index.html

<html>
  <head>
    ${require('./_meta.html')}
    <script>
      ${require('./_script.js')}
    </script>
  </head>
  <body>
    <main>
      ${require('./_main.html') foo="and you can also pass props"}
    </main>
  </body>
</html>

src/_meta.html

<meta meta="meta" />

src/_script.js

console.log("Hello World!");

src/_main.html

<p>Main content ${props.foo}</p>

Result

In /dist you'd have simply index.html, containing:

<html>
  <head>
    <meta meta="meta" />
    <script>
      console.log("Hello World!");
    </script>
  </head>
  <body>
    <main>
      <p>Main content and you can also pass props</p>
    </main>
  </body>
</html>

Or with the --minify flag, you'd get:

<html>
  <head>
    <meta meta="meta" />
  </head>
  <body>
    <main><p>Main content</p></main>
  </body>
</html>

Options

Flag Description Default
--watch Watch for file changes false
--src Source dir "src"
--dest Compiled output dir "dist"
--minify Enable Minification of HTML false
--minify option=[boolean] Set any of the boolean options in https://github.com/kangax/html-minifier#options-quick-reference - e.g --minify conservativeCollapse=true Various typical values
--quiet Silence successful save logs false

Notes

  • Filenames starting with an _ underscore will not be saved into destination (in the style of partial files in Sass).

About

👭 HTML compilation with partial includes and minification


Languages

Language:JavaScript 100.0%