Use resolveJsId when resolving tailwindcss/package.json (#15041)
This PR uses the `enhanced-resolve` instead of `createRequire(…).resolve` which improves the usability when running the upgrade tool locally using Bun. While testing, we also noticed that it is not possible to use a `cjs`-only plugin inside of an `esm` project. It was also not possible to use an `esm`-only plugin inside of a `cjs` project. # Test plan We added integration tests in both the CLI (the CLI is an mjs project) and in the PostCSS (where we can configure a `cjs` and `esm` PostCSS config) integration tests where we created an `esm` and `cjs` based project with 4 plugins (`cjs`-only, `esm`-only, and TypeScript based plugins: `cts`-only and `mts`-only).
This commit is contained in:
parent
e4bfa8c9b7
commit
fe9fc9abba
6 changed files with 365 additions and 16 deletions
|
|
@ -174,11 +174,18 @@ async function resolveCssId(id: string, base: string): Promise<string | false |
|
|||
return runResolver(cssResolver, id, base)
|
||||
}
|
||||
|
||||
const jsResolver = EnhancedResolve.ResolverFactory.createResolver({
|
||||
const esmResolver = EnhancedResolve.ResolverFactory.createResolver({
|
||||
fileSystem: new EnhancedResolve.CachedInputFileSystem(fs, 4000),
|
||||
useSyncFileSystemCalls: true,
|
||||
extensions: ['.js', '.json', '.node', '.ts'],
|
||||
conditionNames: import.meta.url ? ['node', 'import'] : ['node', 'require'],
|
||||
conditionNames: ['node', 'import'],
|
||||
})
|
||||
|
||||
const cjsResolver = EnhancedResolve.ResolverFactory.createResolver({
|
||||
fileSystem: new EnhancedResolve.CachedInputFileSystem(fs, 4000),
|
||||
useSyncFileSystemCalls: true,
|
||||
extensions: ['.js', '.json', '.node', '.ts'],
|
||||
conditionNames: ['node', 'require'],
|
||||
})
|
||||
|
||||
function resolveJsId(id: string, base: string): Promise<string | false | undefined> {
|
||||
|
|
@ -188,7 +195,7 @@ function resolveJsId(id: string, base: string): Promise<string | false | undefin
|
|||
return Promise.resolve(resolved)
|
||||
}
|
||||
}
|
||||
return runResolver(jsResolver, id, base)
|
||||
return runResolver(esmResolver, id, base).catch(() => runResolver(cjsResolver, id, base))
|
||||
}
|
||||
|
||||
function runResolver(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue