Files
meteor/packages/ecmascript/plugin.js

62 lines
1.5 KiB
JavaScript

function BabelCompiler() {}
var BCp = BabelCompiler.prototype;
BCp.processFilesForTarget = function (inputFiles) {
inputFiles.forEach(function (inputFile) {
var source = inputFile.getContentsAsString();
var inputFilePath = inputFile.getPathInPackage();
var outputFilePath = inputFile.getPathInPackage();
var fileOptions = inputFile.getFileOptions();
var toBeAdded = {
sourcePath: inputFilePath,
path: outputFilePath,
data: source,
hash: inputFile.getSourceHash(),
sourceMap: null,
bare: !! fileOptions.bare
};
if (fileOptions.transpile !== false) {
var babelOptions = Babel.getDefaultOptions();
babelOptions.sourceMap = true;
babelOptions.filename = inputFilePath;
babelOptions.sourceFileName = "/" + inputFilePath;
babelOptions.sourceMapName = "/" + outputFilePath + ".map";
try {
var result = Babel.compile(source, babelOptions);
} catch (e) {
if (e.loc) {
inputFile.error({
message: e.message,
sourcePath: inputFilePath,
line: e.loc.line,
column: e.loc.column,
});
return;
}
throw e;
}
toBeAdded.data = result.code;
toBeAdded.hash = result.hash;
toBeAdded.sourceMap = result.map;
}
inputFile.addJavaScript(toBeAdded);
});
};
BCp.setDiskCacheDirectory = function (cacheDir) {
Babel.setCacheDir(cacheDir);
};
Plugin.registerCompiler({
extensions: ['js'],
}, function () {
return new BabelCompiler();
});