mirror of https://github.com/artf/grapesjs.git
nocodeframeworkdrag-and-dropsite-buildersite-generatortemplate-builderui-builderweb-builderweb-builder-frameworkwebsite-builderno-codepage-builder
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
import { printRow, buildWebpackArgs, log, normalizeJsonOpt } from './utils';
|
|
import webpack from 'webpack';
|
|
import webpackDevServer from 'webpack-dev-server';
|
|
import webpackConfig from './webpack.config';
|
|
import chalk from 'chalk';
|
|
|
|
interface ServeOptions {
|
|
host?: string;
|
|
port?: number;
|
|
verbose?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Start up the development server
|
|
* @param {Object} opts
|
|
*/
|
|
export default (opts: ServeOptions = {}) => {
|
|
printRow('Start the development server...');
|
|
const { host, port } = opts;
|
|
const isVerb = opts.verbose;
|
|
const resultWebpackConf = {
|
|
...webpackConfig({ args: buildWebpackArgs(opts), cmdOpts: opts }),
|
|
...normalizeJsonOpt(opts, 'webpack'),
|
|
};
|
|
const devServerConf = {
|
|
...resultWebpackConf.devServer,
|
|
open: true,
|
|
...normalizeJsonOpt(opts, 'devServer'),
|
|
};
|
|
|
|
if (host !== 'localhost') {
|
|
devServerConf.host = host;
|
|
}
|
|
|
|
if (port !== 8080) {
|
|
devServerConf.port = port;
|
|
}
|
|
|
|
if (isVerb) {
|
|
log(chalk.yellow('Server config:\n'), opts, '\n');
|
|
log(chalk.yellow('DevServer config:\n'), devServerConf, '\n');
|
|
}
|
|
|
|
const compiler = webpack(resultWebpackConf);
|
|
const server = new webpackDevServer(devServerConf, compiler);
|
|
|
|
server.start();
|
|
};
|
|
|