diff --git a/README.md b/README.md index e6d439fb4..8880e6003 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,8 @@ $ preact build --src Entry file (index.js). [default: "src"] --dest Directory root for output. [default: "build"] --production, -p Create a minified production build. [default: true] - --no-prerender Disable pre-render of static app content. + --no-prerender Disable pre-render of static app content. + --service-worker Add a service worker to application. [default: true] --prerenderUrls Path to pre-render routes configuration. [default "prerender-urls.json"] --template Path to template file. --clean Clear output directory before building. [default: true] @@ -133,16 +134,16 @@ $ preact serve ### Templates -### Full: +### Full: - Preact Router Included - Dynamic routes Demo -### Simple: +### Simple: -- Github API +- Github API Demo ### Empty diff --git a/src/commands/build.js b/src/commands/build.js index 17c2f8b95..444e03eea 100644 --- a/src/commands/build.js +++ b/src/commands/build.js @@ -31,6 +31,10 @@ export default asyncCommand({ description: 'Path to pre-render routes configuration.', default: 'prerender-urls.json' }, + 'service-worker': { + description: 'Add a service worker to the application.', + default: true + }, clean: { description: 'Clear output directory before building.', default: true diff --git a/src/lib/entry.js b/src/lib/entry.js index 420231a38..c770705e2 100644 --- a/src/lib/entry.js +++ b/src/lib/entry.js @@ -4,7 +4,7 @@ if (process.env.NODE_ENV==='development') { // enable preact devtools require('preact/devtools'); } -else if ('serviceWorker' in navigator && location.protocol === 'https:') { +else if (process.env.ADD_SW && 'serviceWorker' in navigator && location.protocol === 'https:') { navigator.serviceWorker.register('/sw.js'); } diff --git a/src/lib/webpack/webpack-client-config.js b/src/lib/webpack/webpack-client-config.js index 6acf8dbbf..8c9514cd9 100644 --- a/src/lib/webpack/webpack-client-config.js +++ b/src/lib/webpack/webpack-client-config.js @@ -139,7 +139,10 @@ function isProd(config) { /push-manifest\.json$/, /.DS_Store/ ] - }) + }), + new webpack.DefinePlugin({ + 'process.env.ADD_SW': config.serviceWorker + }), ] }; }