mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
Plugin.registerCompiler({
|
|
extensions: ['coffee', 'litcoffee', 'coffee.md']
|
|
}, () => new CachedCoffeeScriptCompiler());
|
|
|
|
|
|
// The CompileResult for this CachingCompiler is a {source, sourceMap} object.
|
|
class CachedCoffeeScriptCompiler extends CachingCompiler {
|
|
constructor() {
|
|
super({
|
|
compilerName: 'coffeescript',
|
|
defaultCacheSize: 1024*1024*10,
|
|
});
|
|
|
|
this.coffeeScriptCompiler = new CoffeeScriptCompiler();
|
|
}
|
|
|
|
getCacheKey(inputFile) {
|
|
return [
|
|
inputFile.getArch(),
|
|
inputFile.getSourceHash(),
|
|
inputFile.getDeclaredExports(),
|
|
this.coffeeScriptCompiler.getCompileOptions(inputFile),
|
|
];
|
|
}
|
|
|
|
setDiskCacheDirectory(cacheDir) {
|
|
this.coffeeScriptCompiler.babelCompiler.setDiskCacheDirectory(cacheDir);
|
|
return super.setDiskCacheDirectory(cacheDir);
|
|
}
|
|
|
|
compileOneFileLater(inputFile, getResult) {
|
|
inputFile.addJavaScript({
|
|
path: this.coffeeScriptCompiler.outputFilePath(inputFile),
|
|
sourcePath: inputFile.getPathInPackage(),
|
|
bare: inputFile.getFileOptions().bare
|
|
}, async () => {
|
|
const result = await getResult();
|
|
return result && {
|
|
data: result.source,
|
|
sourceMap: result.sourceMap,
|
|
};
|
|
});
|
|
}
|
|
|
|
compileOneFile(inputFile) {
|
|
return this.coffeeScriptCompiler.compileOneFile(inputFile);
|
|
}
|
|
|
|
addCompileResult(inputFile, sourceWithMap) {
|
|
inputFile.addJavaScript({
|
|
path: this.coffeeScriptCompiler.outputFilePath(inputFile),
|
|
sourcePath: inputFile.getPathInPackage(),
|
|
data: sourceWithMap.source,
|
|
sourceMap: sourceWithMap.sourceMap,
|
|
bare: inputFile.getFileOptions().bare
|
|
});
|
|
}
|
|
|
|
compileResultSize(sourceWithMap) {
|
|
return sourceWithMap.source.length +
|
|
this.sourceMapSize(sourceWithMap.sourceMap);
|
|
}
|
|
}
|