Files
NativeScript/build/tsc-dev.ts
2016-05-16 14:39:29 +03:00

46 lines
1.6 KiB
TypeScript

import * as ts from "typescript";
declare var process, require;
var fs = require("fs");
function compile(fileNames: string[], options: ts.CompilerOptions) {
var program = ts.createProgram(fileNames, options);
var sourceFiles = program.getSourceFiles().filter(f => f.fileName.lastIndexOf(".d.ts") !== f.fileName.length - 5);
// sourceFiles.forEach(sf => console.log(" - " + sf.fileName));
var emitResults = [];
var allDiagnostics = [];
sourceFiles.forEach(srcFile => emitResults.push(program.emit(srcFile)));
sourceFiles.forEach(srcFile => allDiagnostics = allDiagnostics.concat(ts.getPreEmitDiagnostics(program, srcFile)));
emitResults.forEach(er => allDiagnostics = allDiagnostics.concat(er.diagnostics));
allDiagnostics.forEach(diagnostic => {
var d = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
var line = d.line;
var character = d.character;
var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
var code = diagnostic.code;
console.log(diagnostic.file.fileName + "(" + (line + 1) + "," + (character + 1) + "): TS" + code + ": " + message);
});
var exitCode = emitResults.some(er => er.emitSkipped) ? 1 : 0;
console.log("Process exiting with code " + exitCode + ".");
process.exit(exitCode);
}
var files = JSON.parse(fs.readFileSync("./tsconfig.json")).files;
compile(files,
{
noEmitOnError: true,
noEmitHelpers: true,
target: ts.ScriptTarget.ES5,
module: ts.ModuleKind.CommonJS,
declaration: false,
noImplicitAny: false,
noImplicitUseStrict: true,
experimentalDecorators: true
});