From 0c98f33573c8d2844eddc5892c4e7f39fdfa70ad Mon Sep 17 00:00:00 2001 From: alex8088 <244096523@qq.com> Date: Fri, 15 Dec 2023 21:40:24 +0800 Subject: [PATCH] perf(externalizeDepsPlugin): use cached package data to improve performance --- src/plugins/externalizeDeps.ts | 7 ++----- src/utils.ts | 4 +++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/plugins/externalizeDeps.ts b/src/plugins/externalizeDeps.ts index 69aa123..e2b089b 100644 --- a/src/plugins/externalizeDeps.ts +++ b/src/plugins/externalizeDeps.ts @@ -1,6 +1,5 @@ -import path from 'node:path' -import { createRequire } from 'node:module' import { type Plugin, mergeConfig } from 'vite' +import { loadPackageData } from '../utils' export interface ExternalOptions { exclude?: string[] @@ -13,9 +12,7 @@ export interface ExternalOptions { export function externalizeDepsPlugin(options: ExternalOptions = {}): Plugin | null { const { exclude = [], include = [] } = options - const packagePath = path.resolve(process.cwd(), 'package.json') - const require = createRequire(import.meta.url) - const pkg = require(packagePath) + const pkg = loadPackageData() || {} let deps = Object.keys(pkg.dependencies || {}) if (include.length) { diff --git a/src/utils.ts b/src/utils.ts index e2b2e64..810a0c1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -53,6 +53,7 @@ export function loadEnv( interface PackageData { main?: string type?: 'module' | 'commonjs' + dependencies?: Record } let packageCached: PackageData | null = null @@ -65,7 +66,8 @@ export function loadPackageData(root = process.cwd()): PackageData | null { const data = _require(pkg) packageCached = { main: data.main, - type: data.type + type: data.type, + dependencies: data.dependencies } return packageCached }