Skip to content

skynes/html-builder

Repository files navigation

HTML Bundle Builder

Standalone project for building a single offline HTML bundle for WebView apps.

It inlines external CSS, JavaScript, and file-based resources into one output file.

Quick start (recommended: npx)

Run directly without local installation:

npx @skynes/html-builder --help

Build with explicit input/output:

npx @skynes/html-builder --input ./web/index.html --output ./dist/web.bundle.html

Build using config targets:

npx @skynes/html-builder --config ./build.config.json --target android
npx @skynes/html-builder --config ./build.config.json --target all

Use inside other repositories (example):

npx @skynes/html-builder --config ./html-bundle.config.json --target android

Available target values:

  • any key from targets in config (for example: android, windows)
  • all to build all targets
  • default (used when no --target is passed)

Local install (alternative)

Install dependencies:

npm install

Run build:

npm run build

Run with direct script call:

node build.js --input /absolute/or/relative/source.html --output /absolute/or/relative/bundle.html
node build.js --config ./build.config.json --target android

Show help:

npm run build:help

What the builder does

  1. Reads source HTML.
  2. Inlines external <link rel="stylesheet"> files into <style> tags.
  3. Inlines external <script src="..."> files.
  4. Rewrites url(...) inside CSS to data: URLs when possible.
  5. Optionally processes db_local object (if present) and converts file-like values to data: URLs.
  6. Applies safe HTML minification (outside script/style/pre/textarea blocks).
  7. Writes a final bundle file for offline WebView usage.

Notes

  • Relative file paths are resolved from the source HTML file directory.
  • HTTP/HTTPS assets are downloaded and embedded as data: URLs.
  • If db_local does not exist in your HTML scripts, the build still succeeds.

Recommended structure

Keep this builder as a standalone repository and store environment-specific paths in a local config file.

  1. Copy build.config.example.json to build.config.json.
  2. Adjust input and targets paths for your local projects (Android/Windows/etc.).
  3. Run build with config:
node build.js --config ./build.config.json --target android

This keeps the builder source independent while still producing bundles directly into your target repositories.

Feedback

If you find a bug or have an improvement suggestion, please open an issue.

About

Build offline html for WebView

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors