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.
40 lines
1016 B
40 lines
1016 B
var ts = require("typescript");
|
|
var babel = require("@babel/core");
|
|
var fs = require("fs");
|
|
var spawn = require("child_process").spawn;
|
|
var dirname = require("path").dirname;
|
|
|
|
function spawnString(source, dir) {
|
|
return spawn("node", ["-e", source], {
|
|
cwd: dir,
|
|
});
|
|
}
|
|
|
|
// path has to be fully qualified
|
|
exports.spawnTypeScript = function spawnTypeScript(path) {
|
|
var content = fs.readFileSync(path, "utf-8");
|
|
|
|
var compilerOptions = {
|
|
module: ts.ModuleKind.CommonJS,
|
|
};
|
|
|
|
var transpiled = ts.transpile(content, compilerOptions);
|
|
|
|
return spawnString(transpiled, dirname(path));
|
|
};
|
|
|
|
exports.spawnJavaScript = function spawnJavaScript(path) {
|
|
var content = fs.readFileSync(path, "utf-8");
|
|
|
|
return spawnString(content, dirname(path));
|
|
};
|
|
|
|
exports.spawnBabel = function spawnBabel(path) {
|
|
var content = fs.readFileSync(path, "utf-8");
|
|
|
|
var result = babel.transform(content, {
|
|
plugins: ["@babel/plugin-transform-modules-commonjs"],
|
|
});
|
|
|
|
return spawnString(result.code, dirname(path));
|
|
};
|
|
|