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
+ }),
]
};
}