53 lines
2.6 KiB
JavaScript
53 lines
2.6 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
var semver = require('semver');
|
||
|
var constants = require("./constants");
|
||
|
function getCompiler(loaderOptions, log) {
|
||
|
var compiler;
|
||
|
var errorMessage;
|
||
|
var compilerDetailsLogMessage;
|
||
|
var compilerCompatible = false;
|
||
|
try {
|
||
|
compiler = require(loaderOptions.compiler);
|
||
|
}
|
||
|
catch (e) {
|
||
|
errorMessage = loaderOptions.compiler === 'typescript'
|
||
|
? 'Could not load TypeScript. Try installing with `npm install typescript`. If TypeScript is installed globally, try using `npm link typescript`.'
|
||
|
: "Could not load TypeScript compiler with NPM package name `" + loaderOptions.compiler + "`. Are you sure it is correctly installed?";
|
||
|
}
|
||
|
if (!errorMessage) {
|
||
|
compilerDetailsLogMessage = "ts-loader: Using " + loaderOptions.compiler + "@" + compiler.version;
|
||
|
compilerCompatible = false;
|
||
|
if (loaderOptions.compiler === 'typescript') {
|
||
|
if (compiler.version && semver.gte(compiler.version, '1.6.2-0')) {
|
||
|
// don't log yet in this case, if a tsconfig.json exists we want to combine the message
|
||
|
compilerCompatible = true;
|
||
|
}
|
||
|
else {
|
||
|
log.logError((compilerDetailsLogMessage + ". This version is incompatible with ts-loader. Please upgrade to the latest version of TypeScript.").red);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
log.logWarning((compilerDetailsLogMessage + ". This version may or may not be compatible with ts-loader.").yellow);
|
||
|
}
|
||
|
}
|
||
|
return { compiler: compiler, compilerCompatible: compilerCompatible, compilerDetailsLogMessage: compilerDetailsLogMessage, errorMessage: errorMessage };
|
||
|
}
|
||
|
exports.getCompiler = getCompiler;
|
||
|
function getCompilerOptions(compilerCompatible, compiler, configParseResult) {
|
||
|
var compilerOptions = Object.assign({}, configParseResult.options, {
|
||
|
skipDefaultLibCheck: true,
|
||
|
suppressOutputPathCheck: true,
|
||
|
});
|
||
|
// if `module` is not specified and not using ES6 target, default to CJS module output
|
||
|
if ((!compilerOptions.module) && compilerOptions.target !== constants.ScriptTargetES2015) {
|
||
|
compilerOptions.module = constants.ModuleKindCommonJs;
|
||
|
}
|
||
|
else if (compilerCompatible && semver.lt(compiler.version, '1.7.3-0') && compilerOptions.target === constants.ScriptTargetES2015) {
|
||
|
// special handling for TS 1.6 and target: es6
|
||
|
compilerOptions.module = constants.ModuleKindNone;
|
||
|
}
|
||
|
return compilerOptions;
|
||
|
}
|
||
|
exports.getCompilerOptions = getCompilerOptions;
|