Skip to content

Distribute a Progressive Web App on the Microsoft Store

License

Notifications You must be signed in to change notification settings

PaulCapron/pwa2uwp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The PWA2UWP toolkit

Browser-based tools to publish a Progressive Web App (PWA) as an Universal Windows Platform (UWP) application.

Usage

During development, make the src directory available via HTTP.
For instance, run cd src && python3 -m http.server (alias make devserve.)

Old browsers, including Internet Explorer 11, only (partially) work using the build, fit-for-distribution, website.

Build

To build the fit-for-distribution website, run make. The resulting content is put in dst/, ready to be uploaded to a webserver.

The build process requires an UNIX-like system, with GNU Make and a JRE ≥ 8 installed.

Some third-party open-source JARs are also needed. They are automatically downloaded, on first need, by make.
(The HTTPGET variable defines the download command to execute. It’s curl by default. wget -O - works too.)
These “development dependencies” are:

  • saxon9he.jar, a XSLT processor, mainly to embed CSS/JS code directly into the HTML.
    On Ubuntu ≥ 18.04, you can alternatively apt install libsaxonhe-java, then symlink /usr/share/java/Saxon-HE.jar to 3p/saxon9he.jar.

  • closure-compiler.jar, to transpile and minify JavaScript code.
    ⚠ The version available in Ubuntu package repositories is too old to work.

  • yuicompressor.jar, to minify CSS code.

  • htmlcompressor.jar, to minify HTML & XML code.

Hierarchy

  • 3p/: contains the third-party dependencies needed to build the fit-for-distribution website. See the Build section for how to get them. Not tracked by git.

  • dst/: the build, fit-for-distribution, website content. Generated using make. Not tracked by git.

  • src/: the source website content. Kept simple, stupid. HTML is repeated, CSS skips classes, JS is modular ES6 that transpiles cheaply.

  • GNUmakefile: recipes to build the fit-for-distribution website.

  • LICENSE.txt: licensing/copyright information for this repository. Everything is CC0.

  • netlify.toml: configuration for hosting on Netlify. The Netlify↔GitHub integration is not used; deploys are manual.

  • postprod.xsl: XSLT stylesheet used during the build process.

  • README.md: this file.