diff --git a/packages/nx/src/project-graph/plugins/internal-api.ts b/packages/nx/src/project-graph/plugins/internal-api.ts index 8437f57e14..730d0cf5bc 100644 --- a/packages/nx/src/project-graph/plugins/internal-api.ts +++ b/packages/nx/src/project-graph/plugins/internal-api.ts @@ -147,8 +147,8 @@ export const nxPluginCache: Map< export async function loadNxPlugins( plugins: PluginConfiguration[], root = workspaceRoot -): Promise<[LoadedNxPlugin[], () => void]> { - const result: Promise[] = []; +): Promise void]> { + performance.mark('loadNxPlugins:start'); const loadingMethod = process.env.NX_ISOLATE_PLUGINS === 'true' @@ -157,14 +157,18 @@ export async function loadNxPlugins( plugins = await normalizePlugins(plugins, root); - const cleanupFunctions: Array<() => void> = []; - for (const plugin of plugins) { - const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root); - result.push(loadedPluginPromise); - cleanupFunctions.push(cleanup); - } + const result: Promise[] = new Array(plugins?.length); - return [ + const cleanupFunctions: Array<() => void> = []; + await Promise.all( + plugins.map(async (plugin, idx) => { + const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root); + result[idx] = loadedPluginPromise; + cleanupFunctions.push(cleanup); + }) + ); + + const ret = [ await Promise.all(result), () => { for (const fn of cleanupFunctions) { @@ -175,6 +179,13 @@ export async function loadNxPlugins( } }, ] as const; + performance.mark('loadNxPlugins:end'); + performance.measure( + 'loadNxPlugins', + 'loadNxPlugins:start', + 'loadNxPlugins:end' + ); + return ret; } async function normalizePlugins(plugins: PluginConfiguration[], root: string) { diff --git a/packages/nx/src/project-graph/plugins/isolation/plugin-worker.ts b/packages/nx/src/project-graph/plugins/isolation/plugin-worker.ts index e032128ccb..509b1d0fa9 100644 --- a/packages/nx/src/project-graph/plugins/isolation/plugin-worker.ts +++ b/packages/nx/src/project-graph/plugins/isolation/plugin-worker.ts @@ -2,8 +2,9 @@ import { consumeMessage, isPluginWorkerMessage } from './messaging'; import { LoadedNxPlugin } from '../internal-api'; import { loadNxPlugin } from '../loader'; import { createSerializableError } from '../../../utils/serializable-error'; -import { createServer } from 'net'; import { consumeMessagesFromSocket } from '../../../utils/consume-messages-from-socket'; + +import { createServer } from 'net'; import { unlinkSync } from 'fs'; if (process.env.NX_PERF_LOGGING === 'true') {