From 106b2faaf1957409d761df77afd7602b0ae6e3b4 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Wed, 14 Mar 2018 14:25:00 +0100 Subject: [PATCH 1/8] Extract css --- package.json | 1 + views/admin.ejs | 1 + views/embed/stream.ejs | 1 + views/login.ejs | 1 + webpack.config.js | 16 +++++++++++----- yarn.lock | 11 ++++++++++- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 924df52d6..29becde3e 100644 --- a/package.json +++ b/package.json @@ -213,6 +213,7 @@ "enzyme-adapter-react-15": "^1.0.0", "eslint": "^4.5.0", "eslint-plugin-mocha": "^4.11.0", + "extract-text-webpack-plugin": "^3.0.2", "husky": "^0.14.3", "identity-obj-proxy": "^3.0.0", "ip": "^1.1.5", diff --git a/views/admin.ejs b/views/admin.ejs index 939da0dcf..36356f797 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -5,6 +5,7 @@ Talk - Coral Admin + + + + + + <%- include partials/head %> diff --git a/views/embed/stream.ejs b/views/embed/stream.ejs index 50faaf5c2..0ca249176 100644 --- a/views/embed/stream.ejs +++ b/views/embed/stream.ejs @@ -2,6 +2,8 @@ + + <%- include ../partials/head %> diff --git a/views/login.ejs b/views/login.ejs index 9ae282f65..7af820a9c 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -2,6 +2,8 @@ + + <%- include partials/head %> diff --git a/views/partials/head.ejs b/views/partials/head.ejs index 555f5689e..e6cdb97d2 100644 --- a/views/partials/head.ejs +++ b/views/partials/head.ejs @@ -12,11 +12,9 @@ - - <%_ if (locals.customCssUrl) { _%> <%_ } _%> <%- include data %> - \ No newline at end of file + From 58c5026fb7359fcec660e5f3d68c99a78ed06bcd Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 19 Mar 2018 13:00:41 -0600 Subject: [PATCH 8/8] some minor fixes --- middleware/staticTemplate.js | 47 +++++++++++++++++++++--------------- webpack.config.js | 13 ++++++++-- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/middleware/staticTemplate.js b/middleware/staticTemplate.js index 1d79f0011..b7d01feb4 100644 --- a/middleware/staticTemplate.js +++ b/middleware/staticTemplate.js @@ -1,8 +1,7 @@ const SettingsService = require('../services/settings'); const fs = require('fs'); const path = require('path'); -const merge = require('lodash/merge'); -const memoize = require('lodash/memoize'); +const { merge } = require('lodash'); const { BASE_URL, @@ -38,36 +37,44 @@ const attachStaticLocals = locals => { } }; +// MANIFESTS are all the manifests accessible by Talk. +const MANIFESTS = ['../dist/manifest.json', '../dist/manifest.embed.json']; + +// getManifest will retrieve the manifest files and parse the JSON. function getManifest() { return merge( {}, - ...['../dist/manifest.json', '../dist/manifest.embed.json'] - .map(f => fs.readFileSync(path.resolve(__dirname, f), 'utf8')) - .map(JSON.parse) + ...MANIFESTS.map(f => + fs.readFileSync(path.resolve(__dirname, f), 'utf8') + ).map(JSON.parse) ); } -const getManifestMemoized = memoize(getManifest); - -if (process.env.NODE_ENV === 'production') { - // Crash early if file does not exists. - getManifestMemoized(); -} - -function resolve(key) { +/** + * resolve is a function that can be used in templates to resolve an asset from + * the manifest. In production, the manifest is cached. + */ +const resolve = (() => { if (process.env.NODE_ENV === 'production') { - return `${STATIC_URL}static/${getManifestMemoized()[key]}`; - } else { - // In dev mode, we are more forgiving and we always load the - // newest version of the manifest. + // In production, we should attempt to load the manifest early. + const manifest = getManifest(); + + return key => `${STATIC_URL}static/${manifest[key]}`; + } + + // In dev mode, we are more forgiving and we always load the + // newest version of the manifest. + return key => { try { - return `${STATIC_URL}static/${getManifest()[key]}`; + const manifest = getManifest(); + + return `${STATIC_URL}static/${manifest[key]}`; } catch (err) { console.warn(err); return ''; } - } -} + }; +})(); module.exports = async (req, res, next) => { try { diff --git a/webpack.config.js b/webpack.config.js index 0f2287fa9..184107491 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -93,7 +93,15 @@ const config = { use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: [ - 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]', + { + loader: 'css-loader', + options: { + minimize: true, + modules: true, + importLoaders: 1, + localIdentName: '[name]__[local]___[hash:base64:5]', + }, + }, 'postcss-loader', ], }), @@ -104,7 +112,8 @@ const config = { test: /\.(jpg|png|gif|svg)$/, }, { - loader: 'url-loader?limit=100000', + loader: 'url-loader', + options: { limit: 100000 }, test: /\.woff$/, }, {