UNPKG

1.22 kBPlain TextView Raw
1#! /usr/bin/env node
2const webpack = require('webpack')
3const nodemon = require('nodemon')
4const paths = require('../config/paths')
5const once = require('ramda').once
6const defaultConfig = require('../config/webpack.config')
7const path = require('path')
8const fs = require('fs')
9
10const options = {
11 env: 'development'
12}
13
14const configPath = path.resolve('backpack.config.js')
15let userConfig = {}
16
17if (fs.existsSync(configPath)) {
18 const userConfigModule = require(configPath)
19 userConfig = userConfigModule.default || userConfigModule
20}
21
22const serverConfig = userConfig.webpack
23 ? userConfig.webpack(defaultConfig(options), options, webpack)
24 : defaultConfig(options)
25
26process.on('SIGINT', process.exit)
27
28const serverCompiler = webpack(serverConfig)
29
30const startServer = () => {
31 const serverPaths = Object
32 .keys(serverCompiler.options.entry)
33 .map(entry => path.join(serverCompiler.options.output.path, `${entry}.js`))
34 nodemon({ script: serverPaths[0], watch: serverPaths, nodeArgs: process.argv.slice(2) })
35 .on('quit', process.exit)
36}
37
38const startServerOnce = once((err, stats) => {
39 if (err) return
40 startServer()
41})
42serverCompiler.watch(serverConfig.watchOptions || {}, startServerOnce)