Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docs] Add precaching Service Worker to exported docs builds #10267

Merged
merged 2 commits into from
Feb 15, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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 @@ -2212,6 +2212,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 @@ -3948,6 +3954,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 @@ -5089,6 +5103,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 @@ -5172,6 +5192,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 @@ -5648,6 +5676,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 @@ -5701,6 +5733,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 @@ -7410,7 +7455,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 @@ -9179,6 +9224,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 @@ -9782,6 +9833,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