diff --git a/.changeset/rare-pianos-buy.md b/.changeset/rare-pianos-buy.md new file mode 100644 index 0000000000..ade286a1ea --- /dev/null +++ b/.changeset/rare-pianos-buy.md @@ -0,0 +1,5 @@ +--- +"@pnpm/plugin-commands-publishing": patch +--- + +Copy the `.npmrc` from the root of the repository. diff --git a/packages/plugin-commands-publishing/src/publish.ts b/packages/plugin-commands-publishing/src/publish.ts index c6a2d2ada3..e662715cba 100644 --- a/packages/plugin-commands-publishing/src/publish.ts +++ b/packages/plugin-commands-publishing/src/publish.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs' +import { promises as fs, existsSync } from 'fs' import path from 'path' import { docsUrl, readProjectManifest } from '@pnpm/cli-utils' import { Config, types as allTypes } from '@pnpm/config' @@ -193,10 +193,18 @@ Do you want to continue?`, } const cwd = manifest.publishConfig?.directory ? path.join(dir, manifest.publishConfig.directory) : dir + const localNpmrc = path.join(cwd, '.npmrc') + const copyNpmrc = !existsSync(localNpmrc) && opts.workspaceDir && existsSync(path.join(opts.workspaceDir, '.npmrc')) + if (copyNpmrc && opts.workspaceDir) { + await fs.copyFile(path.join(opts.workspaceDir, '.npmrc'), localNpmrc) + } const { status } = runNpm(opts.npmPath, ['publish', '--ignore-scripts', ...args], { cwd, }) + if (copyNpmrc) { + await rimraf(localNpmrc) + } _status = status! } diff --git a/packages/plugin-commands-publishing/test/recursivePublish.ts b/packages/plugin-commands-publishing/test/recursivePublish.ts index 80356277db..94bf8efa78 100644 --- a/packages/plugin-commands-publishing/test/recursivePublish.ts +++ b/packages/plugin-commands-publishing/test/recursivePublish.ts @@ -67,8 +67,7 @@ test('recursive publish', async () => { }, ]) - await fs.writeFile(path.join(pkg1.name, '.npmrc'), CREDENTIALS, 'utf8') - await fs.writeFile(path.join(pkg2.name, '.npmrc'), CREDENTIALS, 'utf8') + await fs.writeFile('.npmrc', CREDENTIALS, 'utf8') await publish.handler({ ...DEFAULT_OPTS, @@ -250,8 +249,7 @@ test('recursive publish writes publish summary', async () => { }, ]) - await fs.writeFile('@pnpmtest/test-recursive-publish-project-3/.npmrc', CREDENTIALS, 'utf8') - await fs.writeFile('@pnpmtest/test-recursive-publish-project-4/.npmrc', CREDENTIALS, 'utf8') + await fs.writeFile('.npmrc', CREDENTIALS, 'utf8') process.env.npm_config_userconfig = path.join('.npmrc') await publish.handler({