Skip to content

Commit

Permalink
added compilation tooling to keep an eye on errors/success of compila…
Browse files Browse the repository at this point in the history
…tions
  • Loading branch information
tzilist committed Jun 11, 2017
1 parent 1a9767c commit 432ba16
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/package.json
Expand Up @@ -11,7 +11,7 @@
"clean": "npm-run-all clean:*",
"clean:bsb": "bsb -clean-world",
"clean:project": "rimraf public/main.js lib .merlin 'src/**/*.js'",
"dev": "npm run build:bsb && npm run dev:parallel",
"dev": "node scripts/startDev.js",
"dev:parallel": "npm-run-all --parallel dev:bsb dev:webpack",
"dev:bsb": "npm run build:bsb -- -w",
"dev:webpack": "webpack-dev-server -w",
Expand Down
114 changes: 114 additions & 0 deletions src/scripts/startDev.js
@@ -0,0 +1,114 @@
const path = require('path');
const chalk = require('chalk');
const spawn = require('child_process').spawn;
const EventEmitter = require('events');

class CompileEmitter extends EventEmitter {}

const compileEmitter = new CompileEmitter();

const bsb = spawn('npm', ['run', 'dev:bsb']);

const webpack = spawn('npm', ['run', 'dev:webpack']);

const berror = spawn('berror', ['--path-to-refmttype', 'refmttype']);

const compileStatus = {
bsb: {
status: 'success',
msg: 'OK',
},
webpack: {
status: 'success',
msg: 'OK',
},
}

function clearConsole() {
process.stdout.write(
process.platform === 'win32' ? '\x1Bc' : '\x1B[2J\x1B[3J\x1B[H'
);
}

bsb.stdout.on('data', (data) => {
berror.stdin.write(data);
});

bsb.stderr.on('data', (data) => {
berror.stdin.write(data);
});

webpack.stdout.on('data', (data) => {
const str = data.toString();
if (str.includes('ERROR')) {
compileStatus.webpack = {
status: 'error',
msg: str,
};
compileEmitter.emit('log');
} else if (str.includes('webpack: Compiled successfully')) {
compileStatus.webpack = {
status: 'success',
msg: 'OK',
};
compileEmitter.emit('log');
}
});

webpack.stderr.on('data', (data) => {
compileStatus.webpack = {
status: 'error',
msg: data.toString(),
};
compileEmitter.emit('log');
});

berror.stdout.on('data', (data) => {
const str = data.toString();
if (str.includes('.re:')) {
compileStatus.bsb = {
status: 'error',
msg: str,
};
compileEmitter.emit('log');
} else if (str.includes('>>>> Finish compiling') && !str.includes('ninja: build stopped: subcommand failed.')) {
compileStatus.bsb = {
status: 'success',
msg: 'OK',
};
compileEmitter.emit('log');
}
});

compileEmitter.on('log', () => {
clearConsole();
const { bsb, webpack } = compileStatus;

process.stdout.write(chalk.yellow('[BUCKLESCRIPT]'));
process.stdout.write('\n');

if (bsb.status === 'error') {
process.stdout.write(chalk.red('Compilation Error'));
process.stdout.write('\n\n');
process.stdout.write(bsb.msg);
} else if (bsb.status === 'success') {
process.stdout.write(chalk.green('Compilation Success'));
} else {
process.stdout.write(chalk.yellow('Compilation Status Unknown'));
}

process.stdout.write('\n\n');

process.stdout.write(chalk.yellow('[WEBPACK]'));
process.stdout.write('\n');

if (webpack.status === 'error') {
process.stdout.write(chalk.red('Compilation Error'));
process.stdout.write('\n\n');
process.stdout.write(webpack.msg);
} else if (webpack.status === 'success') {
process.stdout.write(chalk.green('Compilation Success'));
} else {
process.stdout.write(chalk.yellow('Compilation Status Unknown'));
}
})
10 changes: 9 additions & 1 deletion src/webpack.config.js
Expand Up @@ -10,7 +10,15 @@ module.exports = {
publicPath: '/public'
},
devServer: {
contentBase: path.resolve(__dirname, 'public')
contentBase: path.resolve(__dirname, './public'),
compress: true,
watchContentBase: true,
publicPath: path.resolve(__dirname, './public'),
watchOptions: {
ignored: /node_modules/,
},
clientLogLevel: 'error',
stats: 'errors-only'
},
plugins: [new WriteFilePlugin()]
};

0 comments on commit 432ba16

Please sign in to comment.