Skip to content

Commit 84a502e

Browse files
committed
update
1 parent c1ade06 commit 84a502e

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

lib/ResolverFactory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ function createOptions(options) {
297297
preferRelative: options.preferRelative || false,
298298
preferAbsolute: options.preferAbsolute || false,
299299
restrictions: new Set(options.restrictions),
300-
tsconfig: options.tsconfig || "auto",
300+
tsconfig: options.tsconfig || "",
301301
};
302302
}
303303

lib/TsconfigPathsPlugin.js

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,25 @@ module.exports = class TsconfigPathsPlugin {
3737
apply(resolver) {
3838
const aliasTarget = resolver.ensureHook("internal-resolve");
3939
const moduleTarget = resolver.ensureHook("module");
40-
const aliasOptionsPromise = this.loadAndConvertPaths(resolver);
40+
const aliasResultCachePromise = this.loadAndConvertPaths(resolver);
4141

4242
resolver
4343
.getHook("raw-resolve")
4444
.tapAsync(
4545
"TsconfigPathsPlugin",
4646
async (request, resolveContext, callback) => {
4747
try {
48-
const aliasOptions = await aliasOptionsPromise;
48+
const aliasResult = await aliasResultCachePromise;
49+
if (!aliasResult) return callback();
50+
const { aliases, fileDependencies } = aliasResult;
51+
for (const fileDependency of fileDependencies) {
52+
if (resolveContext.fileDependencies) {
53+
resolveContext.fileDependencies.add(fileDependency);
54+
}
55+
}
4956
aliasResolveHandler(
5057
resolver,
51-
aliasOptions.filter((option) => option.name !== "*"),
58+
aliases.filter((option) => option.name !== "*"),
5259
aliasTarget,
5360
request,
5461
resolveContext,
@@ -66,8 +73,15 @@ module.exports = class TsconfigPathsPlugin {
6673
"TsconfigPathsPlugin",
6774
async (request, resolveContext, callback) => {
6875
try {
69-
const aliasOptions = await aliasOptionsPromise;
70-
const directories = aliasOptions
76+
const aliasResult = await aliasResultCachePromise;
77+
if (!aliasResult) return callback();
78+
const { aliases, fileDependencies } = aliasResult;
79+
for (const fileDependency of fileDependencies) {
80+
if (resolveContext.fileDependencies) {
81+
resolveContext.fileDependencies.add(fileDependency);
82+
}
83+
}
84+
const directories = aliases
7185
.filter((option) => option.name === "*")
7286
.map((option) => /** @type {string} */ (option.alias));
7387
if (directories.length === 0) return callback();
@@ -90,7 +104,7 @@ module.exports = class TsconfigPathsPlugin {
90104
/**
91105
* Load tsconfig.json (and referenced tsconfigs) and convert paths to AliasPlugin format
92106
* @param {Resolver} resolver the resolver
93-
* @returns {Promise<AliasOption[]>} Array of alias options for AliasPlugin
107+
* @returns {Promise<{aliases: AliasOption[], fileDependencies: Set<string>} | null>} Array of alias options for AliasPlugin
94108
*/
95109
async loadAndConvertPaths(resolver) {
96110
try {
@@ -103,10 +117,16 @@ module.exports = class TsconfigPathsPlugin {
103117
resolver,
104118
configPath,
105119
);
106-
if (!mainOptions) return [];
120+
if (!mainOptions) return null;
107121

108122
/** @type {AliasOption[]} */
109123
const aliases = [];
124+
/** @type {Set<string>} */
125+
const fileDependencies = new Set();
126+
const result = {
127+
aliases,
128+
fileDependencies,
129+
};
110130
aliases.push(
111131
...this.convertPathsToAliases(
112132
resolver,
@@ -122,6 +142,8 @@ module.exports = class TsconfigPathsPlugin {
122142
resolve(JSON.parse(/** @type {string} */ (data)));
123143
});
124144
});
145+
fileDependencies.add(configPath);
146+
125147
const references = Array.isArray(tsconfigJson.references)
126148
? tsconfigJson.references
127149
: [];
@@ -157,6 +179,8 @@ module.exports = class TsconfigPathsPlugin {
157179
refPath,
158180
);
159181
if (!refOptions) continue;
182+
fileDependencies.add(refPath);
183+
160184
aliases.push(
161185
...this.convertPathsToAliases(
162186
resolver,
@@ -166,9 +190,9 @@ module.exports = class TsconfigPathsPlugin {
166190
);
167191
}
168192

169-
return aliases;
193+
return result;
170194
} catch (_error) {
171-
return [];
195+
return null;
172196
}
173197
}
174198

0 commit comments

Comments
 (0)