diff --git a/README.md b/README.md index f083e7e..6d8b500 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ seed/ ./mssql ./redux-i18n ./i18n + ./offline ``` ### Coming up next diff --git a/client/config/webpack.config.prod.js b/client/config/webpack.config.prod.js index 1fccd59..db18fb4 100644 --- a/client/config/webpack.config.prod.js +++ b/client/config/webpack.config.prod.js @@ -3,6 +3,7 @@ const merge = require('webpack-merge'); const webpack = require('webpack'); const CleanPlugin = require('clean-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); +const OfflinePlugin = require('offline-plugin'); module.exports = merge(common, { output: { @@ -62,6 +63,7 @@ module.exports = merge(common, { compress: { warnings: false } - }) + }), + new OfflinePlugin() ] }); diff --git a/client/index.jsx b/client/index.jsx index 33d2c33..012d589 100644 --- a/client/index.jsx +++ b/client/index.jsx @@ -1,7 +1,10 @@ import React from 'react'; import { render } from 'react-dom'; -import './index.scss'; +import * as OfflinePluginRuntime from 'offline-plugin/runtime' +import './index.scss'; import Root from './routes/Root'; +OfflinePluginRuntime.install() + render(, document.getElementById('app')); diff --git a/client/package.json b/client/package.json index 7403d10..b561a20 100644 --- a/client/package.json +++ b/client/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "es6-promise": "^4.1.1", + "offline-plugin": "^4.8.3", "prop-types": "^15.5.9", "react": "^15.5.4", "react-dom": "^15.5.4", diff --git a/client/yarn.lock b/client/yarn.lock index 3b6f166..2c9f60d 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -297,6 +297,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -519,6 +523,10 @@ decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +deep-extend@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -588,6 +596,14 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ejs@^2.3.4: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1527,6 +1543,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +loader-utils@0.2.x: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -1766,6 +1791,16 @@ object.values@^1.0.4: function-bind "^1.1.0" has "^1.0.1" +offline-plugin@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.8.3.tgz#9e95bd342ea2ac836b001b81f204c40638694d6c" + dependencies: + deep-extend "^0.4.0" + ejs "^2.3.4" + loader-utils "0.2.x" + minimatch "^3.0.3" + slash "^1.0.0" + once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"