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')
const serverConfig = require('./webpack.server.config')
module.exports = function setupDevServer (app, cb) {
let bundle, template, clientManifest
let bundle, clientManifest
// modify client config to work with hot middleware
clientConfig.entry.app = ['webpack-hot-middleware/client', clientConfig.entry.app]
......@@ -25,11 +25,9 @@ module.exports = function setupDevServer (app, cb) {
clientCompiler.plugin('done', () => {
const fs = devMiddleware.fileSystem
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'))
if (bundle && serverManifest) {
if (bundle) {
cb(bundle, {
template,
clientManifest
})
}
......@@ -51,9 +49,8 @@ module.exports = function setupDevServer (app, cb) {
// read bundle generated by vue-ssr-webpack-plugin
bundle = JSON.parse(readFile('vue-ssr-bundle.json'))
if (template && clientManifest) {
if (clientManifest) {
cb(bundle, {
template,
clientManifest
})
}
......
......@@ -2,7 +2,6 @@ const webpack = require('webpack')
const merge = require('webpack-merge')
const base = require('./webpack.base.config')
const vueConfig = require('./vue-loader.config')
const HTMLPlugin = require('html-webpack-plugin')
const SWPrecachePlugin = require('sw-precache-webpack-plugin')
const VueSSRClientPlugin = require('vue-ssr-webpack-plugin').client
......@@ -32,10 +31,6 @@ const config = merge(base, {
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest'
}),
// generate output HTML
new HTMLPlugin({
template: 'src/index.template.html'
}),
new VueSSRClientPlugin()
]
})
......
......@@ -13,9 +13,12 @@ const serverInfo =
const app = express()
const template = fs.readFileSync(resolve('./src/index.template.html'), 'utf-8')
function createRenderer (bundle, options) {
// https://github.com/vuejs/vue/blob/dev/packages/vue-server-renderer/README.md#why-use-bundlerenderer
return createBundleRenderer(bundle, Object.assign(options, {
template,
// for component caching
cache: require('lru-cache')({
max: 1000,
......@@ -29,19 +32,15 @@ function createRenderer (bundle, options) {
let renderer
if (isProd) {
// In production: create server renderer using server bundle and index HTML
// template from real fs.
// In production: create server renderer using built server bundle.
// The server bundle is generated by vue-ssr-webpack-plugin.
const bundle = require('./dist/vue-ssr-bundle.json')
// src/index.template.html is processed by html-webpack-plugin to inject
// build assets and output as dist/index.html.
const template = fs.readFileSync(resolve('./dist/index.html'), 'utf-8')
renderer = createRenderer(bundle, {
template,
// 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')
const clientManifest = require('./dist/vue-ssr-client-manifest.json')
renderer = createRenderer(bundle, {
clientManifest
})
} else {
// 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