From 3e3c3ff714f97226b569eecfbdba2eb65a4b9b5c Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Mon, 26 Apr 2021 19:06:41 +0300 Subject: [PATCH] fix: preinstall should run after dependencies are installed (#3395) --- .changeset/sixty-pillows-brush.md | 6 ++++++ packages/headless/src/index.ts | 11 +---------- packages/supi/src/install/index.ts | 10 +--------- 3 files changed, 8 insertions(+), 19 deletions(-) create mode 100644 .changeset/sixty-pillows-brush.md diff --git a/.changeset/sixty-pillows-brush.md b/.changeset/sixty-pillows-brush.md new file mode 100644 index 0000000000..cf9c7cec60 --- /dev/null +++ b/.changeset/sixty-pillows-brush.md @@ -0,0 +1,6 @@ +--- +"@pnpm/headless": patch +"supi": patch +--- + +`preinstall` scripts should run after installing the dependencies (this is how it works with npm). diff --git a/packages/headless/src/index.ts b/packages/headless/src/index.ts index 85c55e6e97..c7a8ee43ad 100644 --- a/packages/headless/src/index.ts +++ b/packages/headless/src/index.ts @@ -164,15 +164,6 @@ export default async (opts: HeadlessOptions) => { unsafePerm: opts.unsafePerm || false, } - if (!opts.ignoreScripts && !opts.ignorePackageManifest) { - await runLifecycleHooksConcurrently( - ['preinstall'], - opts.projects, - opts.childConcurrency ?? 5, - scriptsOpts - ) - } - const skipped = opts.skipped || new Set() if (currentLockfile != null && !opts.ignorePackageManifest) { await prune( @@ -434,7 +425,7 @@ export default async (opts: HeadlessOptions) => { if (!opts.ignoreScripts && !opts.ignorePackageManifest) { await runLifecycleHooksConcurrently( - ['install', 'postinstall', 'prepublish', 'prepare'], + ['preinstall', 'install', 'postinstall', 'prepublish', 'prepare'], opts.projects, opts.childConcurrency ?? 5, scriptsOpts diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index 445361566f..cf13f59fa0 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -304,14 +304,6 @@ export async function mutateModules ( stdio: opts.ownLifecycleHooksStdio, unsafePerm: opts.unsafePerm || false, } - if (!opts.ignoreScripts) { - await runLifecycleHooksConcurrently( - ['preinstall'], - projectsToBeInstalled, - opts.childConcurrency, - scriptsOpts - ) - } // TODO: make it concurrent for (const project of ctx.projects) { @@ -467,7 +459,7 @@ export async function mutateModules ( if (opts.enablePnp) { scriptsOpts.extraEnv = makeNodeRequireOption(path.join(opts.lockfileDir, '.pnp.cjs')) } - await runLifecycleHooksConcurrently(['install', 'postinstall', 'prepare'], + await runLifecycleHooksConcurrently(['preinstall', 'install', 'postinstall', 'prepare'], projectsToBeInstalled, opts.childConcurrency, scriptsOpts