From 292390828bb7a98157d8562b0ff484b0ac5de4f1 Mon Sep 17 00:00:00 2001 From: Arunoda Susiripala Date: Thu, 27 Oct 2016 15:50:52 +0530 Subject: [PATCH 1/2] Add a random cache key to all .js urls in the build. --- dist/server/build.js | 9 +++++++-- dist/server/iframe.html.js | 5 +++-- dist/server/index.html.js | 5 +++-- package.json | 2 +- src/server/build.js | 6 ++++-- src/server/iframe.html.js | 5 +++-- src/server/index.html.js | 5 +++-- yarn.lock | 2 +- 8 files changed, 25 insertions(+), 14 deletions(-) mode change 100644 => 100755 dist/server/build.js diff --git a/dist/server/build.js b/dist/server/build.js old mode 100644 new mode 100755 index fa3c13dce825..2fb98c9b381f --- a/dist/server/build.js +++ b/dist/server/build.js @@ -43,6 +43,10 @@ var _iframe2 = _interopRequireDefault(_iframe); var _utils = require('./utils'); +var _uuid = require('uuid'); + +var _uuid2 = _interopRequireDefault(_uuid); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } process.env.NODE_ENV = process.env.NODE_ENV || 'production'; @@ -91,11 +95,12 @@ if (_commander2.default.staticDir) { }); } +var cacheKey = _uuid2.default.v4(); // Write both the storybook UI and IFRAME HTML files to destination path. var headHtml = (0, _utils.getHeadHtml)(configDir); var publicPath = config.output.publicPath; -_fs2.default.writeFileSync(_path2.default.resolve(outputDir, 'index.html'), (0, _index2.default)(publicPath)); -_fs2.default.writeFileSync(_path2.default.resolve(outputDir, 'iframe.html'), (0, _iframe2.default)(headHtml, publicPath)); +_fs2.default.writeFileSync(_path2.default.resolve(outputDir, 'index.html'), (0, _index2.default)(publicPath, cacheKey)); +_fs2.default.writeFileSync(_path2.default.resolve(outputDir, 'iframe.html'), (0, _iframe2.default)(headHtml, publicPath, cacheKey)); // compile all resources with webpack and write them to the disk. logger.log('Building storybook ...'); diff --git a/dist/server/iframe.html.js b/dist/server/iframe.html.js index 72976ccc493c..fec537009378 100644 --- a/dist/server/iframe.html.js +++ b/dist/server/iframe.html.js @@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = function (headHtml, publicPath) { - return '\n \n \n \n \n \n \n React Storybook\n ' + headHtml + '\n \n \n
\n
\n \n \n \n '; +exports.default = function (headHtml, publicPath, cacheKey) { + var previewUrl = cacheKey ? 'static/preview.bundle.js?' + cacheKey : 'static/preview.bundle.js'; + return '\n \n \n \n \n \n \n React Storybook\n ' + headHtml + '\n \n \n
\n
\n \n \n \n '; }; var _url = require('url'); diff --git a/dist/server/index.html.js b/dist/server/index.html.js index d3e159491585..2a0bf35db346 100644 --- a/dist/server/index.html.js +++ b/dist/server/index.html.js @@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = function (publicPath) { - return '\n \n \n \n \n \n React Storybook\n \n \n \n
\n \n \n \n '; +exports.default = function (publicPath, cacheKey) { + var managerUrl = cacheKey ? 'static/manager.bundle.js?' + cacheKey : 'static/manager.bundle.js'; + return '\n \n \n \n \n \n React Storybook\n \n \n \n
\n \n \n \n '; }; var _url = require('url'); diff --git a/package.json b/package.json index 839d968be597..0e7158e4d89c 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "shelljs": "^0.7.4", "style-loader": "0.13.1", "url-loader": "^0.5.7", - "uuid": "^2.0.2", + "uuid": "^2.0.3", "webpack": "^1.13.1", "webpack-dev-middleware": "^1.6.0", "webpack-hot-middleware": "^2.10.0" diff --git a/src/server/build.js b/src/server/build.js index e4b6205d3e0d..3c8348ef1ba0 100644 --- a/src/server/build.js +++ b/src/server/build.js @@ -11,6 +11,7 @@ import loadConfig from './config'; import getIndexHtml from './index.html'; import getIframeHtml from './iframe.html'; import { getHeadHtml, parseList, getEnvConfig } from './utils'; +import uuid from 'uuid'; process.env.NODE_ENV = process.env.NODE_ENV || 'production'; @@ -69,11 +70,12 @@ if (program.staticDir) { }); } +const cacheKey = uuid.v4(); // Write both the storybook UI and IFRAME HTML files to destination path. const headHtml = getHeadHtml(configDir); const publicPath = config.output.publicPath; -fs.writeFileSync(path.resolve(outputDir, 'index.html'), getIndexHtml(publicPath)); -fs.writeFileSync(path.resolve(outputDir, 'iframe.html'), getIframeHtml(headHtml, publicPath)); +fs.writeFileSync(path.resolve(outputDir, 'index.html'), getIndexHtml(publicPath, cacheKey)); +fs.writeFileSync(path.resolve(outputDir, 'iframe.html'), getIframeHtml(headHtml, publicPath, cacheKey)); // compile all resources with webpack and write them to the disk. logger.log('Building storybook ...'); diff --git a/src/server/iframe.html.js b/src/server/iframe.html.js index 5d4b2b3ff3e5..b7507c670ce3 100644 --- a/src/server/iframe.html.js +++ b/src/server/iframe.html.js @@ -1,6 +1,7 @@ import url from 'url'; -export default function (headHtml, publicPath) { +export default function (headHtml, publicPath, cacheKey) { + const previewUrl = cacheKey? `static/preview.bundle.js?${cacheKey}` : 'static/preview.bundle.js'; return ` @@ -18,7 +19,7 @@ export default function (headHtml, publicPath) {
- + `; diff --git a/src/server/index.html.js b/src/server/index.html.js index 71a6eb0c1ff2..ccb87d0db18e 100644 --- a/src/server/index.html.js +++ b/src/server/index.html.js @@ -1,6 +1,7 @@ import url from 'url'; -export default function (publicPath) { +export default function (publicPath, cacheKey) { + const managerUrl = cacheKey? `static/manager.bundle.js?${cacheKey}` : 'static/manager.bundle.js'; return ` @@ -40,7 +41,7 @@ export default function (publicPath) {
- + `; diff --git a/yarn.lock b/yarn.lock index bebc0af9fce0..5f46ea1e2eb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5110,7 +5110,7 @@ utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" -uuid@^2.0.1, uuid@^2.0.2: +uuid, uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" From 78c162de935cd4d6f0657e2844b488d7b8b35ddb Mon Sep 17 00:00:00 2001 From: Arunoda Susiripala Date: Thu, 27 Oct 2016 15:52:22 +0530 Subject: [PATCH 2/2] Fix lint issues. --- src/server/build.js | 2 +- src/server/iframe.html.js | 2 +- src/server/index.html.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/build.js b/src/server/build.js index 3c8348ef1ba0..3afc6c196fa1 100644 --- a/src/server/build.js +++ b/src/server/build.js @@ -5,13 +5,13 @@ import program from 'commander'; import path from 'path'; import fs from 'fs'; import shelljs from 'shelljs'; +import uuid from 'uuid'; import packageJson from '../../package.json'; import getBaseConfig from './config/webpack.config.prod'; import loadConfig from './config'; import getIndexHtml from './index.html'; import getIframeHtml from './iframe.html'; import { getHeadHtml, parseList, getEnvConfig } from './utils'; -import uuid from 'uuid'; process.env.NODE_ENV = process.env.NODE_ENV || 'production'; diff --git a/src/server/iframe.html.js b/src/server/iframe.html.js index b7507c670ce3..7c0f01075c55 100644 --- a/src/server/iframe.html.js +++ b/src/server/iframe.html.js @@ -1,7 +1,7 @@ import url from 'url'; export default function (headHtml, publicPath, cacheKey) { - const previewUrl = cacheKey? `static/preview.bundle.js?${cacheKey}` : 'static/preview.bundle.js'; + const previewUrl = cacheKey ? `static/preview.bundle.js?${cacheKey}` : 'static/preview.bundle.js'; return ` diff --git a/src/server/index.html.js b/src/server/index.html.js index ccb87d0db18e..5e1d60d75143 100644 --- a/src/server/index.html.js +++ b/src/server/index.html.js @@ -1,7 +1,7 @@ import url from 'url'; export default function (publicPath, cacheKey) { - const managerUrl = cacheKey? `static/manager.bundle.js?${cacheKey}` : 'static/manager.bundle.js'; + const managerUrl = cacheKey ? `static/manager.bundle.js?${cacheKey}` : 'static/manager.bundle.js'; return `