78 lines
2.9 KiB
JavaScript
78 lines
2.9 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var path = require("path");
|
|
var utils = require("./utils");
|
|
function getConfigFile(compiler, loader, loaderOptions, compilerCompatible, log, compilerDetailsLogMessage) {
|
|
var configFilePath = findConfigFile(compiler, path.dirname(loader.resourcePath), loaderOptions.configFileName);
|
|
var configFileError;
|
|
var configFile;
|
|
if (configFilePath) {
|
|
if (compilerCompatible) {
|
|
log.logInfo((compilerDetailsLogMessage + " and " + configFilePath).green);
|
|
}
|
|
else {
|
|
log.logInfo(("ts-loader: Using config file at " + configFilePath).green);
|
|
}
|
|
// HACK: relies on the fact that passing an extra argument won't break
|
|
// the old API that has a single parameter
|
|
configFile = compiler.readConfigFile(configFilePath, compiler.sys.readFile);
|
|
if (configFile.error) {
|
|
configFileError = utils.formatErrors([configFile.error], loaderOptions, compiler, { file: configFilePath })[0];
|
|
}
|
|
}
|
|
else {
|
|
if (compilerCompatible) {
|
|
log.logInfo(compilerDetailsLogMessage.green);
|
|
}
|
|
configFile = {
|
|
config: {
|
|
compilerOptions: {},
|
|
files: [],
|
|
},
|
|
};
|
|
}
|
|
if (!configFileError) {
|
|
configFile.config.compilerOptions = Object.assign({}, configFile.config.compilerOptions, loaderOptions.compilerOptions);
|
|
// do any necessary config massaging
|
|
if (loaderOptions.transpileOnly) {
|
|
configFile.config.compilerOptions.isolatedModules = true;
|
|
}
|
|
}
|
|
return {
|
|
configFilePath: configFilePath,
|
|
configFile: configFile,
|
|
configFileError: configFileError
|
|
};
|
|
}
|
|
exports.getConfigFile = getConfigFile;
|
|
/**
|
|
* The tsconfig.json is found using the same method as `tsc`, starting in the current directory
|
|
* and continuing up the parent directory chain.
|
|
*/
|
|
function findConfigFile(compiler, searchPath, configFileName) {
|
|
while (true) {
|
|
var fileName = path.join(searchPath, configFileName);
|
|
if (compiler.sys.fileExists(fileName)) {
|
|
return fileName;
|
|
}
|
|
var parentPath = path.dirname(searchPath);
|
|
if (parentPath === searchPath) {
|
|
break;
|
|
}
|
|
searchPath = parentPath;
|
|
}
|
|
return undefined;
|
|
}
|
|
function getConfigParseResult(compiler, configFile, configFilePath) {
|
|
var configParseResult;
|
|
if (typeof compiler.parseJsonConfigFileContent === 'function') {
|
|
// parseConfigFile was renamed between 1.6.2 and 1.7
|
|
configParseResult = compiler.parseJsonConfigFileContent(configFile.config, compiler.sys, path.dirname(configFilePath || ''));
|
|
}
|
|
else {
|
|
configParseResult = compiler.parseConfigFile(configFile.config, compiler.sys, path.dirname(configFilePath || ''));
|
|
}
|
|
return configParseResult;
|
|
}
|
|
exports.getConfigParseResult = getConfigParseResult;
|