有时自己项目 import 的路径不是正规的需要手动修改一下tsWorder.js文件下这个函数,修改下引入路径的解析规则:
function classicNameResolver(moduleName, containingFile, compilerOptions, host, cache, redirectedReference) {
var traceEnabled = isTraceEnabled(compilerOptions, host);
var failedLookupLocations = [];
var state = { compilerOptions: compilerOptions, host: host, traceEnabled: traceEnabled, failedLookupLocations: failedLookupLocations };
var containingDirectory = ts.getDirectoryPath(containingFile);
var resolved = tryResolve(Extensions.TypeScript) || tryResolve(Extensions.JavaScript);
// No originalPath because classic resolution doesn't resolve realPath
return createResolvedModuleWithFailedLookupLocations(resolved && resolved.value, /*isExternalLibraryImport*/ false, failedLookupLocations, state.resultFromCache);
function tryResolve(extensions) {
var resolvedUsingSettings = tryLoadModuleUsingOptionalResolutionSettings(extensions, moduleName, containingDirectory, loadModuleFromFileNoPackageId, state);
if (resolvedUsingSettings) {
return { value: resolvedUsingSettings };
}
if (!ts.isExternalModuleNameRelative(moduleName)) {
var perModuleNameCache_1 = cache && cache.getOrCreateCacheForModuleName(moduleName, redirectedReference);
// Climb up parent directories looking for a module.
var resolved_3 = ts.forEachAncestorDirectory(containingDirectory, function (directory) {
// 添加自定义路径解析1
var moduleName_cus = moduleName;
if(moduleName_cus.lastIndexOf('/')){
moduleName_cus = moduleName_cus.substr(moduleName_cus.lastIndexOf('/')+1);
}
var resolutionFromCache = tryFindNonRelativeModuleNameInCache(perModuleNameCache_1, moduleName, directory, state) || tryFindNonRelativeModuleNameInCache(perModuleNameCache_1, moduleName_cus, directory, state);
if (resolutionFromCache) {
return resolutionFromCache;
}
// 添加自定义路径解析2
var searchName = ts.normalizePath(ts.combinePaths(directory, moduleName));
var searchName_cus = ts.normalizePath(ts.combinePaths(directory, moduleName_cus));
return toSearchResult(loadModuleFromFileNoPackageId(extensions, searchName, /*onlyRecordFailures*/ false, state)) || toSearchResult(loadModuleFromFileNoPackageId(extensions, searchName_cus, /*onlyRecordFailures*/ false, state));
});
if (resolved_3) {
return resolved_3;
}
if (extensions === Extensions.TypeScript) {
// If we didn't find the file normally, look it up in @types.
return loadModuleFromNearestNodeModulesDirectoryTypesScope(moduleName, containingDirectory, state);
}
}
else {
var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName));
return toSearchResult(loadModuleFromFileNoPackageId(extensions, candidate, /*onlyRecordFailures*/ false, state));
}
}
}