instapack
Version:
All-in-one TypeScript and Sass compiler for web applications!
58 lines (57 loc) • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.tryReadTypeScriptConfigJson = exports.parseTypescriptConfig = void 0;
const fse = require("fs-extra");
const upath = require("upath");
const TypeScript = require("typescript");
const Shout_1 = require("./Shout");
const chalk = require("chalk");
const fallbackTypeScriptConfig = {
compilerOptions: {
"target": "ES2015",
"module": "ESNext",
"lib": [
"DOM",
"DOM.Iterable",
"ES2015",
],
"resolveJsonModule": true,
"jsx": "react",
"importHelpers": false,
"strict": true,
"noImplicitAny": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
}
};
function parseTypescriptConfig(folder, json) {
const o = JSON.parse(JSON.stringify(json));
const tsconfig = TypeScript.parseJsonConfigFileContent(o, TypeScript.sys, folder);
if (tsconfig.errors.length) {
const errorMessage = tsconfig.errors.map(Q => Q.messageText.toString()).join("\n\n");
throw Error(errorMessage);
}
return tsconfig;
}
exports.parseTypescriptConfig = parseTypescriptConfig;
async function tryReadTypeScriptConfigJson(folder) {
const tsconfigJsonPath = upath.join(folder, 'tsconfig.json');
try {
const tsconfigRaw = await fse.readFile(tsconfigJsonPath, 'utf8');
const parse = TypeScript.parseConfigFileTextToJson(tsconfigJsonPath, tsconfigRaw);
parseTypescriptConfig(folder, parse.config);
return parse.config;
}
catch (error) {
Shout_1.Shout.error('when reading', chalk.cyanBright(tsconfigJsonPath), error);
Shout_1.Shout.warning('Using the default fallback TypeScript configuration!');
console.log(fallbackTypeScriptConfig);
return fallbackTypeScriptConfig;
}
}
exports.tryReadTypeScriptConfigJson = tryReadTypeScriptConfigJson;