@beemo/driver-babel
Version:
Babel driver for Beemo.
70 lines (53 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
const rimraf = require('rimraf');
const core = require('@beemo/core');
const _interopDefault = e => e && e.__esModule ? e : {
default: e
};
const rimraf__default = /*#__PURE__*/_interopDefault(rimraf); // Success: Writes file list to stdout
// Failure: Throws SyntaxError to stderr
class BabelDriver extends core.Driver {
constructor(...args) {
super(...args);
this.name = '@beemo/driver-babel';
this.handleCleanTarget = context => {
const outDir = context.getRiskyOption('outDir', true);
if (context.getRiskyOption('clean') && typeof outDir === 'string' && outDir) {
rimraf__default.default.sync(core.Path.resolve(outDir).path());
}
return Promise.resolve();
};
}
bootstrap() {
this.setMetadata({
bin: 'babel',
commandOptions: {
clean: {
default: false,
description: this.tool.msg('app:babelCleanOption'),
type: 'boolean'
}
},
configName: 'babel.config.js',
configOption: '--config-file',
description: this.tool.msg('app:babelDescription'),
title: 'Babel',
watchOptions: ['-w', '--watch']
});
this.onBeforeExecute.listen(this.handleCleanTarget);
}
extractErrorMessage(error) {
if (error.message.includes('SyntaxError')) {
return error.message.split(/\s+at/u, 1)[0].trim();
}
return super.extractErrorMessage(error);
}
/**
* Automatically clean the target folder if --out-dir is used.
*/
}
exports.BabelDriver = BabelDriver;
//# sourceMappingURL=BabelDriver.js.map