|
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