@lipemat/js-boilerplate
Version:
Dependencies and scripts for a no config JavaScript app
48 lines (41 loc) • 1.4 kB
text/typescript
process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development';
import webpack from 'webpack';
import {getPackageConfig} from '@lipemat/js-boilerplate-shared/helpers/package-config.js';
import {unlinkSync, writeFile} from 'fs';
import WebpackDevServer from 'webpack-dev-server';
import {getConfig} from '../helpers/config.js';
import {getDevServerPort} from '../helpers/dev-server-port.js';
import path from 'path';
process.env.LIPEMAT_DEV_SERVER_PORT = String( await getDevServerPort() );
const webpackConfig = await getConfig( 'webpack.dev.js' );
const devServerConfig = await getConfig( 'dev-server.config.js' );
const compiler = webpack( webpackConfig );
if ( null === compiler ) {
throw new Error( 'Failed to create the webpack compiler.' );
}
const server = new WebpackDevServer( devServerConfig, compiler );
/**
* Create a `.running` file within the `dist` which only
* exists if this script is running.
*/
const runningFile = path.resolve( getPackageConfig().workingDirectory, 'dist/.running' );
writeFile( runningFile, JSON.stringify( {
pid: process.pid,
port: Number( process.env.LIPEMAT_DEV_SERVER_PORT ),
started: new Date().toISOString(),
} ), err => {
if ( err ) {
throw err;
}
process.on( 'exit', () => {
unlinkSync( runningFile );
} );
} );
( async() => {
try {
await server.start();
} catch ( err ) {
return console.error( err );
}
} )();