UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

37 lines (35 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts = require("typescript"); const errors_1 = require("./../errors"); const DefaultFileSystemHost_1 = require("./../DefaultFileSystemHost"); const FileUtils_1 = require("./FileUtils"); /** * Gets the compiler options from a specified tsconfig.json * @param filePath - File path to the tsconfig.json. * @param fileSystemHost - Optional file system host. */ function getCompilerOptionsFromTsConfig(filePath, fileSystemHost) { fileSystemHost = fileSystemHost || new DefaultFileSystemHost_1.DefaultFileSystemHost(); const absoluteFilePath = FileUtils_1.FileUtils.getAbsoluteOrRelativePathFromPath(filePath, FileUtils_1.FileUtils.getCurrentDirectory()); verifyFileExists(fileSystemHost, absoluteFilePath); const result = ts.parseConfigFileTextToJson(absoluteFilePath, fileSystemHost.readFile(absoluteFilePath)); if (result.error != null) throw new Error(result.error.messageText.toString()); const settings = ts.convertCompilerOptionsFromJson(result.config.compilerOptions, FileUtils_1.FileUtils.getDirPath(filePath)); if (!settings.options) throw new Error(getErrorMessage(settings.errors)); return settings.options; } exports.getCompilerOptionsFromTsConfig = getCompilerOptionsFromTsConfig; function getErrorMessage(errors) { let message = ""; errors.forEach(err => message += `${err.messageText}\n`); return message; } function verifyFileExists(fileSystemHost, filePath) { // unfortunately the ts compiler doesn't do things asynchronously so for now we won't either if (!fileSystemHost.fileExistsSync(filePath)) throw new errors_1.FileNotFoundError(filePath); } //# sourceMappingURL=getCompilerOptionsFromTsConfig.js.map