|
1 | 1 | import * as fs from 'fs' |
2 | 2 | import { CachedInputFileSystem, ResolverFactory, Resolver, ResolveOptions } from 'enhanced-resolve' |
| 3 | +import { equal } from 'tailwindcss-language-service/src/util/array' |
| 4 | + |
| 5 | +let pnpApi: any |
| 6 | +let extensions = Object.keys(require.extensions) |
3 | 7 |
|
4 | 8 | function createResolver(options: Partial<ResolveOptions> = {}): Resolver { |
5 | 9 | return ResolverFactory.createResolver({ |
6 | 10 | fileSystem: new CachedInputFileSystem(fs, 4000), |
7 | 11 | useSyncFileSystemCalls: true, |
8 | 12 | // cachePredicate: () => false, |
9 | 13 | conditionNames: ['node', 'require'], |
| 14 | + extensions, |
| 15 | + pnpApi, |
10 | 16 | ...options, |
11 | 17 | }) |
12 | 18 | } |
13 | 19 |
|
14 | 20 | let resolver = createResolver() |
15 | 21 |
|
16 | | -export function setPnpApi(pnpApi: any): void { |
17 | | - resolver = createResolver({ pnpApi }) |
| 22 | +export function setPnpApi(newPnpApi: any): void { |
| 23 | + pnpApi = newPnpApi |
| 24 | + resolver = createResolver() |
18 | 25 | } |
19 | 26 |
|
20 | 27 | export default function resolveFrom(from?: string, id?: string): string { |
21 | 28 | if (id.startsWith('\\\\')) return id |
| 29 | + |
| 30 | + let newExtensions = Object.keys(require.extensions) |
| 31 | + if (!equal(newExtensions, extensions)) { |
| 32 | + extensions = newExtensions |
| 33 | + resolver = createResolver() |
| 34 | + } |
| 35 | + |
22 | 36 | let result = resolver.resolveSync({}, from, id) |
23 | 37 | if (result === false) throw Error() |
24 | 38 | // https://github.com/webpack/enhanced-resolve/issues/282 |
|
0 commit comments