Commit 8e9fe6f2 authored by Evan You's avatar Evan You

update setup (get rid of html plugin)

parent c4d3ab9d
...@@ -5,7 +5,7 @@ const clientConfig = require('./webpack.client.config') ...@@ -5,7 +5,7 @@ const clientConfig = require('./webpack.client.config')
const serverConfig = require('./webpack.server.config') const serverConfig = require('./webpack.server.config')
module.exports = function setupDevServer (app, cb) { module.exports = function setupDevServer (app, cb) {
let bundle, template, clientManifest let bundle, clientManifest
// modify client config to work with hot middleware // modify client config to work with hot middleware
clientConfig.entry.app = ['webpack-hot-middleware/client', clientConfig.entry.app] clientConfig.entry.app = ['webpack-hot-middleware/client', clientConfig.entry.app]
...@@ -25,11 +25,9 @@ module.exports = function setupDevServer (app, cb) { ...@@ -25,11 +25,9 @@ module.exports = function setupDevServer (app, cb) {
clientCompiler.plugin('done', () => { clientCompiler.plugin('done', () => {
const fs = devMiddleware.fileSystem const fs = devMiddleware.fileSystem
const readFile = file => fs.readFileSync(path.join(clientConfig.output.path, file), 'utf-8') const readFile = file => fs.readFileSync(path.join(clientConfig.output.path, file), 'utf-8')
template = readFile('index.html')
clientManifest = JSON.parse(readFile('vue-ssr-client-manifest.json')) clientManifest = JSON.parse(readFile('vue-ssr-client-manifest.json'))
if (bundle && serverManifest) { if (bundle) {
cb(bundle, { cb(bundle, {
template,
clientManifest clientManifest
}) })
} }
...@@ -51,9 +49,8 @@ module.exports = function setupDevServer (app, cb) { ...@@ -51,9 +49,8 @@ module.exports = function setupDevServer (app, cb) {
// read bundle generated by vue-ssr-webpack-plugin // read bundle generated by vue-ssr-webpack-plugin
bundle = JSON.parse(readFile('vue-ssr-bundle.json')) bundle = JSON.parse(readFile('vue-ssr-bundle.json'))
if (template && clientManifest) { if (clientManifest) {
cb(bundle, { cb(bundle, {
template,
clientManifest clientManifest
}) })
} }
......
...@@ -2,7 +2,6 @@ const webpack = require('webpack') ...@@ -2,7 +2,6 @@ const webpack = require('webpack')
const merge = require('webpack-merge') const merge = require('webpack-merge')
const base = require('./webpack.base.config') const base = require('./webpack.base.config')
const vueConfig = require('./vue-loader.config') const vueConfig = require('./vue-loader.config')
const HTMLPlugin = require('html-webpack-plugin')
const SWPrecachePlugin = require('sw-precache-webpack-plugin') const SWPrecachePlugin = require('sw-precache-webpack-plugin')
const VueSSRClientPlugin = require('vue-ssr-webpack-plugin').client const VueSSRClientPlugin = require('vue-ssr-webpack-plugin').client
...@@ -32,10 +31,6 @@ const config = merge(base, { ...@@ -32,10 +31,6 @@ const config = merge(base, {
new webpack.optimize.CommonsChunkPlugin({ new webpack.optimize.CommonsChunkPlugin({
name: 'manifest' name: 'manifest'
}), }),
// generate output HTML
new HTMLPlugin({
template: 'src/index.template.html'
}),
new VueSSRClientPlugin() new VueSSRClientPlugin()
] ]
}) })
......
...@@ -13,9 +13,12 @@ const serverInfo = ...@@ -13,9 +13,12 @@ const serverInfo =
const app = express() const app = express()
const template = fs.readFileSync(resolve('./src/index.template.html'), 'utf-8')
function createRenderer (bundle, options) { function createRenderer (bundle, options) {
// https://github.com/vuejs/vue/blob/dev/packages/vue-server-renderer/README.md#why-use-bundlerenderer // https://github.com/vuejs/vue/blob/dev/packages/vue-server-renderer/README.md#why-use-bundlerenderer
return createBundleRenderer(bundle, Object.assign(options, { return createBundleRenderer(bundle, Object.assign(options, {
template,
// for component caching // for component caching
cache: require('lru-cache')({ cache: require('lru-cache')({
max: 1000, max: 1000,
...@@ -29,19 +32,15 @@ function createRenderer (bundle, options) { ...@@ -29,19 +32,15 @@ function createRenderer (bundle, options) {
let renderer let renderer
if (isProd) { if (isProd) {
// In production: create server renderer using server bundle and index HTML // In production: create server renderer using built server bundle.
// template from real fs.
// The server bundle is generated by vue-ssr-webpack-plugin. // The server bundle is generated by vue-ssr-webpack-plugin.
const bundle = require('./dist/vue-ssr-bundle.json') const bundle = require('./dist/vue-ssr-bundle.json')
// src/index.template.html is processed by html-webpack-plugin to inject // The client manifests are optional, but it allows the renderer
// build assets and output as dist/index.html. // to automatically infer preload/prefetch links and directly add <script>
const template = fs.readFileSync(resolve('./dist/index.html'), 'utf-8') // tags for any async chunks used during render, avoiding waterfall requests.
const clientManifest = require('./dist/vue-ssr-client-manifest.json')
renderer = createRenderer(bundle, { renderer = createRenderer(bundle, {
template, clientManifest
// The client manifests are optional, but it allows the renderer
// to automatically infer preload/prefetch links and directly add <script>
// tags for any async chunks used during render, avoiding waterfall requests.
clientManifest: require('./dist/vue-ssr-client-manifest.json')
}) })
} else { } else {
// In development: setup the dev server with watch and hot-reload, // In development: setup the dev server with watch and hot-reload,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment