|
| 1 | +import * as ts from "typescript"; |
| 2 | +declare var process, require; |
| 3 | +var fs = require("fs"); |
| 4 | + |
| 5 | +function compile(fileNames: string[], options: ts.CompilerOptions) { |
| 6 | + var program = ts.createProgram(fileNames, options); |
| 7 | + |
| 8 | + var sourceFiles = program.getSourceFiles().filter(f => f.fileName.lastIndexOf(".d.ts") !== f.fileName.length - 5); |
| 9 | + // sourceFiles.forEach(sf => console.log(" - " + sf.fileName)); |
| 10 | + |
| 11 | + var emitResults = []; |
| 12 | + var allDiagnostics = []; |
| 13 | + |
| 14 | + sourceFiles.forEach(srcFile => emitResults.push(program.emit(srcFile))); |
| 15 | + sourceFiles.forEach(srcFile => allDiagnostics = allDiagnostics.concat(ts.getPreEmitDiagnostics(program, srcFile))); |
| 16 | + emitResults.forEach(er => allDiagnostics = allDiagnostics.concat(er.diagnostics)); |
| 17 | + |
| 18 | + allDiagnostics.forEach(diagnostic => { |
| 19 | + var d = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); |
| 20 | + var line = d.line; |
| 21 | + var character = d.character; |
| 22 | + var message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); |
| 23 | + var code = diagnostic.code; |
| 24 | + console.log(diagnostic.file.fileName + "(" + (line + 1) + "," + (character + 1) + "): TS" + code + ": " + message); |
| 25 | + }); |
| 26 | + |
| 27 | + var exitCode = emitResults.some(er => er.emitSkipped) ? 1 : 0; |
| 28 | + |
| 29 | + console.log("Process exiting with code " + exitCode + "."); |
| 30 | + process.exit(exitCode); |
| 31 | +} |
| 32 | + |
| 33 | +var files = JSON.parse(fs.readFileSync("./tsconfig.json")).files; |
| 34 | +compile(files, |
| 35 | +{ |
| 36 | + noEmitOnError: true, |
| 37 | + noEmitHelpers: true, |
| 38 | + target: ts.ScriptTarget.ES5, |
| 39 | + module: ts.ModuleKind.CommonJS, |
| 40 | + declaration: false, |
| 41 | + noImplicitAny: false, |
| 42 | + noImplicitUseStrict: true, |
| 43 | + experimentalDecorators: true |
| 44 | +}); |
| 45 | + |
0 commit comments