Skip to content

Commit

Permalink
[docs] Add precaching Service Worker to exported docs builds (#10267)
Browse files Browse the repository at this point in the history
* Add service worker to exported docs builds

* push forward
  • Loading branch information
msiadak authored and oliviertassinari committed Feb 15, 2018
1 parent e707ac3 commit bf7feca
Show file tree
Hide file tree
Showing 7 changed files with 215 additions and 5 deletions.
18 changes: 18 additions & 0 deletions docs/scripts/buildServiceWorker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* eslint-disable no-console */

import path from 'path';
import workboxBuild from 'workbox-build';

const exportDir = path.join(__dirname, '../export');

workboxBuild
.injectManifest({
swSrc: path.join(__dirname, '../src/sw.js'),
swDest: path.join(exportDir, '/sw.js'),
globDirectory: exportDir,
globPatterns: ['**/*.{js,html}'],
})
.then(({ count }) => {
console.log('Successfully built service worker');
console.log(`${count} files were marked for precaching`);
});
7 changes: 7 additions & 0 deletions docs/src/modules/components/AppWrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ class AppWrapper extends React.Component {
if (document.body) {
document.body.dir = this.props.uiTheme.direction;
}

if (
'serviceWorker' in navigator &&
(window.location.protocol === 'https:' || window.location.hostname === 'localhost')
) {
navigator.serviceWorker.register('/sw.js');
}
}

componentWillReceiveProps(nextProps) {
Expand Down
6 changes: 5 additions & 1 deletion docs/src/modules/components/Carbon.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ const styles = theme => ({
bottom: theme.spacing.unit * 2,
},
},
carbonads: {
padding: theme.spacing.unit,
backgroundColor: theme.palette.background.paper,
},
info: {
...theme.typography.caption,
position: 'absolute',
Expand Down Expand Up @@ -141,7 +145,7 @@ class Carbon extends React.Component {
return (
<div className={classes.root}>
<div className={classes.ad}>
<div id="carbonads">
<div className={classes.carbonads}>
<Typography gutterBottom>Like Material-UI?</Typography>
<Typography gutterBottom>
{`If you don't mind tech-related ads, and want to support Open Source,
Expand Down
10 changes: 10 additions & 0 deletions docs/src/sw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/* eslint-env serviceworker */
/* global workbox */

importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.0.0-beta.0/workbox-sw.js');

workbox.core.setCacheNameDetails({
prefix: 'mui',
});

workbox.precaching.precacheAndRoute([]);
40 changes: 39 additions & 1 deletion firebase.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
{
"hosting": {
"public": "docs/export"
"public": "docs/export",
"headers": [
{
"source": "**",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache"
}
]
},
{
"source": "**/*.js",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000"
}
]
},
{
"source": "/sw.js",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache"
}
]
},
{
"source" : "**/*.@(jpg|jpeg|gif|png)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=7200"
}
]
}
]
}
}
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@
"docs:icons": "rimraf static/icons/* && babel-node ./docs/scripts/buildIcons.js",
"docs:build": "cross-env NODE_ENV=production BABEL_ENV=docs-production next build",
"docs:start": "next start",
"docs:export": "next export -o docs/export",
"docs:export": "next export -o docs/export && yarn docs:build-sw",
"docs:deploy": "yarn docs:build && yarn docs:export && firebase deploy",
"docs:size-why": "DOCS_STATS_ENABLED=true yarn docs:build",
"docs:build-sw": "babel-node ./docs/scripts/buildServiceWorker.js",
"prebuild": "rimraf build",
"build:es2015": "cross-env NODE_ENV=production babel ./src --ignore *.spec.js --out-dir ./build",
"build:es2015modules": "cross-env NODE_ENV=production BABEL_ENV=modules babel ./src/index.js --out-file ./build/index.es.js",
Expand Down Expand Up @@ -194,7 +195,8 @@
"vrtest": "^0.2.0",
"webfontloader": "^1.6.28",
"webpack": "^3.10.0",
"webpack-bundle-analyzer": "^2.9.1"
"webpack-bundle-analyzer": "^2.9.1",
"workbox-build": "3.0.0-beta.0"
},
"resolutions": {
"@types/react": "16.0.35"
Expand Down
133 changes: 132 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2246,6 +2246,12 @@ commander@~2.9.0:
dependencies:
graceful-readlink ">= 1.0.0"

common-tags@^1.4.0:
version "1.7.2"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771"
dependencies:
babel-runtime "^6.26.0"

commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
Expand Down Expand Up @@ -3971,6 +3977,14 @@ fs-extra@^1.0.0:
jsonfile "^2.1.0"
klaw "^1.0.0"

fs-extra@^4.0.2:
version "4.0.3"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"

fs-extra@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
Expand Down Expand Up @@ -5114,6 +5128,12 @@ isbinaryfile@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621"

isemail@3.x.x:
version "3.1.1"
resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.1.tgz#e8450fe78ff1b48347db599122adcd0668bd92b5"
dependencies:
punycode "2.x.x"

isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
Expand Down Expand Up @@ -5197,6 +5217,14 @@ jest-docblock@^21.0.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"

joi@^11.1.1:
version "11.4.0"
resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb"
dependencies:
hoek "4.x.x"
isemail "3.x.x"
topo "2.x.x"

js-base64@^2.1.9:
version "2.4.3"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
Expand Down Expand Up @@ -5675,6 +5703,10 @@ lodash._baseget@^3.0.0:
version "3.7.2"
resolved "https://registry.yarnpkg.com/lodash._baseget/-/lodash._baseget-3.7.2.tgz#1b6ae1d5facf3c25532350a13c1197cb8bb674f4"

lodash._reinterpolate@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"

lodash._topath@^3.0.0:
version "3.8.1"
resolved "https://registry.yarnpkg.com/lodash._topath/-/lodash._topath-3.8.1.tgz#3ec5e2606014f4cb97f755fe6914edd8bfc00eac"
Expand Down Expand Up @@ -5728,6 +5760,19 @@ lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"

lodash.template@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
dependencies:
lodash._reinterpolate "~3.0.0"
lodash.templatesettings "^4.0.0"

lodash.templatesettings@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
dependencies:
lodash._reinterpolate "~3.0.0"

lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
Expand Down Expand Up @@ -7431,7 +7476,7 @@ punycode@1.4.1, punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"

punycode@^2.1.0:
punycode@2.x.x, punycode@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"

Expand Down Expand Up @@ -9212,6 +9257,12 @@ to-regex@^3.0.1:
extend-shallow "^2.0.1"
regex-not "^1.0.0"

topo@2.x.x:
version "2.0.2"
resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
dependencies:
hoek "4.x.x"

touch@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
Expand Down Expand Up @@ -9826,6 +9877,86 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"

workbox-background-sync@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.0.0-beta.0.tgz#5ce2e206af8b46c7de6b60440ed46764d7b413f5"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-broadcast-cache-update@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.0.0-beta.0.tgz#d0e790c3b87612f4fa13af0825e9098322fd7e03"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-build@3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.0.0-beta.0.tgz#39b9c45caf272403775bf8a671b473604667d42e"
dependencies:
babel-runtime "^6.26.0"
common-tags "^1.4.0"
fs-extra "^4.0.2"
glob "^7.1.2"
joi "^11.1.1"
lodash.template "^4.4.0"
workbox-background-sync "^3.0.0-beta.0"
workbox-broadcast-cache-update "^3.0.0-beta.0"
workbox-cache-expiration "^3.0.0-beta.0"
workbox-cacheable-response "^3.0.0-beta.0"
workbox-core "^3.0.0-beta.0"
workbox-google-analytics "^3.0.0-beta.0"
workbox-precaching "^3.0.0-beta.0"
workbox-routing "^3.0.0-beta.0"
workbox-strategies "^3.0.0-beta.0"
workbox-sw "^3.0.0-beta.0"

workbox-cache-expiration@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.0.0-beta.0.tgz#ad6a751d14a843553776f1d0beb50defadee7a07"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-cacheable-response@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.0.0-beta.0.tgz#876a9f39db05a5c6a93fd67e559018a78b5bc727"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-core@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.0.0-beta.0.tgz#5cb45a26c4b5ea777a295bf5319bf598938d4e4e"

workbox-google-analytics@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.0.0-beta.0.tgz#657a0f0a78c96a3e0bb6a3148351e0621b33851a"
dependencies:
workbox-background-sync "^3.0.0-beta.0"
workbox-core "^3.0.0-beta.0"
workbox-routing "^3.0.0-beta.0"
workbox-strategies "^3.0.0-beta.0"

workbox-precaching@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.0.0-beta.0.tgz#f88cbe0b831e5ec4bae1020b12b7160e6baca29a"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-routing@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.0.0-beta.0.tgz#55e35c2be9a37d358381766916f5c75c9ea95b26"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-strategies@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.0.0-beta.0.tgz#232798184b45d0ad12e598615f96d49861ef857f"
dependencies:
workbox-core "^3.0.0-beta.0"

workbox-sw@^3.0.0-beta.0:
version "3.0.0-beta.0"
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.0.0-beta.0.tgz#8a39491dca1d0f975ceb2ae01969052515eff184"

worker-farm@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
Expand Down

0 comments on commit bf7feca

Please sign in to comment.