deepify
Version:
DEEP Development Tools
71 lines (55 loc) • 2 kB
JavaScript
/**
* Created by AlexanderC on 6/19/15.
*/
;
module.exports = function(mainPath) {
let path = require('path');
let esPreset = require('./helper/es-preset');
let Exec = require('../../../lib.compiled/Helpers/Exec').Exec;
mainPath = this.normalizeInputPath(mainPath);
let extension = this.opts.locate('extension').value || '.es6';
let outDirectory = this.opts.locate('out-dir').value || mainPath;
let compileES5 = this.opts.locate('es5').exists;
let pipeSource = this.opts.locate('source').exists;
let nodeModules = path.join(__dirname, '../../../node_modules');
let babelCompileCommand = () => {
let babelCmd = path.join(nodeModules, 'babel-cli/bin/babel.js');
let presets = [];
let babelES6Preset = null;
let plugins = [ path.join(nodeModules, 'babel-plugin-add-module-exports') ];
if (compileES5) {
presets.push(path.join(nodeModules, 'babel-preset-es2015'));
} else {
babelES6Preset = esPreset();
presets.push(path.join(nodeModules, babelES6Preset));
}
if (compileES5 || babelES6Preset === 'babel-preset-es2015-node4') {
plugins.push(path.join(nodeModules, 'babel-plugin-transform-es2015-classes'));
}
let compileCmd = new Exec(
this.nodeBinary,
babelCmd,
mainPath
);
console.log(`Plugins: ${plugins.map(p => path.basename(p)).join(', ')}`);
console.log(`Presets: ${presets.map(p => path.basename(p)).join(', ')}`);
compileCmd.addArg(`--extensions=${extension}`);
if (presets.length > 0) {
compileCmd.addArg(`--presets=${presets.join(',')}`);
}
if (plugins.length > 0) {
compileCmd.addArg(`--plugins=${plugins.join(',')}`);
}
if (!pipeSource) {
compileCmd.addArg(`--out-dir=${outDirectory}`);
}
return compileCmd;
};
babelCompileCommand().run((result) => {
if (result.failed) {
console.error(result.error);
this.exit(1);
}
}, true);
};