ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
37 lines (35 loc) • 1.78 kB
JavaScript
;
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