From 028c3bb1a6c5f56eaa7f8f122200d6262a1a8683 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 24 Jan 2021 14:44:54 -0500 Subject: [PATCH] fix: esbuild optimizer yarn 2 pnp compat ref #1688 --- .../vite/src/node/optimizer/esbuildDepPlugin.ts | 13 ++++++++++++- packages/vite/src/node/utils.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts index 68583a70c5dfaa..cd873a512feb4e 100644 --- a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts +++ b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts @@ -3,7 +3,7 @@ import { Plugin } from 'esbuild' import { knownAssetTypes } from '../constants' import { ResolvedConfig } from '..' import chalk from 'chalk' -import { deepImportRE, isBuiltin } from '../utils' +import { deepImportRE, isBuiltin, isRunningWithYarnPnp } from '../utils' import { tryNodeResolve } from '../plugins/resolve' import { PluginContainer } from '../server/pluginContainer' @@ -90,6 +90,17 @@ export function esbuildDepPlugin( } } ) + + // yarn 2 pnp compat + if (isRunningWithYarnPnp) { + build.onResolve({ filter: /\.yarn.*/ }, (args) => ({ + path: require.resolve(args.path, { paths: [args.resolveDir] }) + })) + build.onLoad({ filter: /\.yarn.*/ }, async (args) => ({ + contents: await require('fs').promises.readFile(args.path), + loader: 'default' + })) + } } } } diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index f9ec84603a54c1..37700978637884 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -16,7 +16,7 @@ export function isBuiltin(id: string): boolean { export const bareImportRE = /^[\w@](?!.*:\/\/)/ export const deepImportRE = /^([^@][^/]*)\/|^(@[^/]+\/[^/]+)\// -let isRunningWithYarnPnp: boolean +export let isRunningWithYarnPnp: boolean try { isRunningWithYarnPnp = Boolean(require('pnpapi')) } catch {}