Skip to content

Commit a4ee8e4

Browse files
author
Guillaume Chau
committedDec 24, 2018
feat: use chainWebpack
1 parent cf8e2da commit a4ee8e4

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed
 

‎index.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ module.exports = (api, options) => {
1010

1111
api.chainWebpack(webpackConfig => {
1212
// Default entry
13-
webpackConfig.entry('app').clear().add(config.entry('client'))
13+
if (!process.env.VUE_CLI_SSR_TARGET) {
14+
webpackConfig.entry('app').clear().add(config.entry('client'))
15+
} else {
16+
const { chainWebpack } = require('./lib/webpack')
17+
chainWebpack(webpackConfig)
18+
}
1419
})
1520

1621
api.registerCommand('ssr:build', {
@@ -24,9 +29,8 @@ module.exports = (api, options) => {
2429

2530
rimraf.sync(api.resolve(config.distPath))
2631

27-
const { getWebpackConfig } = require('./lib/webpack')
28-
const clientConfig = getWebpackConfig({ service, target: 'client' })
29-
const serverConfig = getWebpackConfig({ service, target: 'server' })
32+
const { getWebpackConfigs } = require('./lib/webpack')
33+
const [clientConfig, serverConfig] = getWebpackConfigs(service)
3034

3135
const compiler = webpack([clientConfig, serverConfig])
3236
const onCompilationComplete = (err, stats) => {

‎lib/dev-server.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const webpack = require('webpack')
44
const chalk = require('chalk')
55

66
const config = require('./config')
7-
const { getWebpackConfig } = require('./webpack')
87

98
module.exports.setupDevServer = ({ server, templatePath, onUpdate }) => new Promise((resolve, reject) => {
109
const service = config.service
@@ -20,8 +19,8 @@ module.exports.setupDevServer = ({ server, templatePath, onUpdate }) => new Prom
2019
} catch (e) {}
2120
}
2221

23-
const clientConfig = getWebpackConfig({ service, target: 'client' })
24-
const serverConfig = getWebpackConfig({ service, target: 'server' })
22+
const { getWebpackConfigs } = require('./webpack')
23+
const [clientConfig, serverConfig] = getWebpackConfigs(service)
2524

2625
let serverBundle
2726
let template

‎lib/webpack.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ const config = require('./config')
77
const HtmlFilterPlugin = require('./plugins/HtmlFilterPlugin')
88
const CssContextLoader = require.resolve('./loaders/css-context')
99

10-
exports.getWebpackConfig = ({ target }) => {
11-
const service = config.service
12-
const isProd = service.mode === 'production'
10+
exports.chainWebpack = (webpackConfig) => {
11+
const target = process.env.VUE_CLI_SSR_TARGET
12+
if (!target) return
1313
const isClient = target === 'client'
14-
15-
let webpackConfig = service.resolveChainableWebpackConfig()
14+
const isProd = process.env.VUE_CLI_MODE === 'production'
1615

1716
// Remove unneeded plugins
1817
webpackConfig.plugins.delete('hmr')
@@ -98,6 +97,13 @@ exports.getWebpackConfig = ({ target }) => {
9897
return options
9998
})
10099
}
100+
}
101101

102-
return service.resolveWebpackConfig(webpackConfig)
102+
exports.getWebpackConfigs = (service) => {
103+
process.env.VUE_CLI_MODE = service.mode
104+
process.env.VUE_CLI_SSR_TARGET = 'client'
105+
const clientConfig = service.resolveWebpackConfig()
106+
process.env.VUE_CLI_SSR_TARGET = 'server'
107+
const serverConfig = service.resolveWebpackConfig()
108+
return [clientConfig, serverConfig]
103109
}

2 commit comments

Comments
 (2)

mayase commented on Feb 8, 2019

@mayase

#57 issue tracked down to this commit.

nether-cat commented on Jun 3, 2019

@nether-cat

#57 issue tracked down to this commit.

see explanation / possible solution here

Please sign in to comment.