UNPKG

@bitberry/bankai-revolutions-cli

Version:
83 lines (65 loc) 2.56 kB
const webpack = require('webpack') const nodemon = require('nodemon') const path = require('path') const fs = require('fs') const once = require('ramda').once const paths = require('../../../config/paths') const defaultConfig = require('../../../config/webpack.config') const moduleConfig = require('./config') const Command = require('../../../core/Command') const command = new Command({ name: 'run [options] [file]', options: moduleConfig.options, action: (commandInstance, scriptFilename) => { if(!scriptFilename) scriptFilename = 'index.js' if(!scriptFilename.endsWith('.js')){ scriptFilename = path.join(scriptFilename, 'index.js') } paths.sourcePath = path.join(process.cwd(), scriptFilename) paths.sourceFile = scriptFilename.replace(/\//g, '_')//paths.sourcePath.split(path.sep).reverse()[0] const configPath = path.resolve('bankai.config.js') const options = { env: process.env.NODE_ENV || 'development', paths } let userConfig = {} if(fs.existsSync(configPath)){ const userConfigModule = require(configPath) userConfig = userConfigModule.default || userConfigModule } const serverConfig = userConfig.webpack ? userConfig.webpack(defaultConfig(options), options, webpack) : defaultConfig(options) process.on('SIGINT', process.exit) const serverCompiler = webpack(serverConfig) const startServer = () => { const serverPaths = Object .keys(serverCompiler.options.entry) .map(entry => path.join(serverCompiler.options.output.path, `${ paths.sourceFile }`)) let inspectFlag = process.argv.splice(2).find((arg) => { return arg.startsWith('--inspect=') }) let startArgs = process.argv.slice(2) if(inspectFlag){ startArgs = [inspectFlag] } nodemon({ script: serverPaths[0], watch: serverPaths, nodeArgs: startArgs }) .on('error', (err) => { console.log(err) }) .on('quit', process.exit) } const startServerOnce = once((err, stats) => { if(err){ return } startServer() }) serverCompiler.watch(serverConfig.watchOptions || {}, startServerOnce) } }) command.Run()