mirror of
https://github.com/pnpm/pnpm.git
synced 2026-01-06 22:18:17 -05:00
feat: group workspace logs inside CI logs (#7143)
--------- Co-authored-by: Zoltan Kochan <z@kochan.io>
This commit is contained in:
6
.changeset/chilly-kangaroos-drive.md
Normal file
6
.changeset/chilly-kangaroos-drive.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/plugin-commands-script-runners": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
When running scripts recursively inside a workspace, the logs of the scripts are grouped together in some CI tools. (Only works with `--workspace-concurrency 1`)
|
||||
@@ -48,6 +48,7 @@
|
||||
"@pnpm/config": "workspace:*",
|
||||
"@pnpm/error": "workspace:*",
|
||||
"@pnpm/lifecycle": "workspace:*",
|
||||
"@pnpm/log.group": "1.0.1",
|
||||
"@pnpm/package-bins": "workspace:*",
|
||||
"@pnpm/plugin-commands-installation": "workspace:*",
|
||||
"@pnpm/read-package-json": "workspace:*",
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
type RunLifecycleHookOptions,
|
||||
} from '@pnpm/lifecycle'
|
||||
import { logger } from '@pnpm/logger'
|
||||
import { groupStart } from '@pnpm/log.group'
|
||||
import { sortPackages } from '@pnpm/sort-packages'
|
||||
import pLimit from 'p-limit'
|
||||
import realpathMissing from 'realpath-missing'
|
||||
@@ -127,7 +128,16 @@ export async function runRecursive (
|
||||
}
|
||||
|
||||
const _runScript = runScript.bind(null, { manifest: pkg.package.manifest, lifecycleOpts, runScriptOptions: { enablePrePostScripts: opts.enablePrePostScripts ?? false }, passedThruArgs })
|
||||
const groupEnd = (opts.workspaceConcurrency ?? 4) > 1
|
||||
? undefined
|
||||
: groupStart(formatSectionName({
|
||||
name: pkg.package.manifest.name,
|
||||
script: scriptName,
|
||||
version: pkg.package.manifest.version,
|
||||
prefix: path.normalize(path.relative(opts.workspaceDir, prefix)),
|
||||
}))
|
||||
await _runScript(scriptName)
|
||||
groupEnd?.()
|
||||
result[prefix].status = 'passed'
|
||||
result[prefix].duration = getExecutionDuration(startTime)
|
||||
} catch (err: any) { // eslint-disable-line
|
||||
@@ -174,6 +184,20 @@ export async function runRecursive (
|
||||
throwOnCommandFail('pnpm recursive run', result)
|
||||
}
|
||||
|
||||
function formatSectionName ({
|
||||
script,
|
||||
name,
|
||||
version,
|
||||
prefix,
|
||||
}: {
|
||||
script?: string
|
||||
name?: string
|
||||
version?: string
|
||||
prefix: string
|
||||
}) {
|
||||
return `${name ?? 'unknown'}${version ? `@${version}` : ''} ${script ? `: ${script}` : ''} ${prefix}`
|
||||
}
|
||||
|
||||
export function getSpecifiedScripts (scripts: PackageScripts, scriptName: string) {
|
||||
// if scripts in package.json has script which is equal to scriptName a user passes, return it.
|
||||
if (scripts[scriptName]) {
|
||||
|
||||
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
@@ -1333,6 +1333,9 @@ importers:
|
||||
'@pnpm/lifecycle':
|
||||
specifier: workspace:*
|
||||
version: link:../lifecycle
|
||||
'@pnpm/log.group':
|
||||
specifier: 1.0.1
|
||||
version: 1.0.1
|
||||
'@pnpm/logger':
|
||||
specifier: ^5.0.0
|
||||
version: 5.0.0
|
||||
@@ -8253,6 +8256,13 @@ packages:
|
||||
'@pnpm/types': 9.1.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/log.group@1.0.1:
|
||||
resolution: {integrity: sha512-MncPYEfmuDeLMVJfcBSJRqWvTRuONWsF3xiCRrzNhvWZa+yffiDXXqthUxomEZkNngpecsmUmCdiLDhap1kwDA==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
dependencies:
|
||||
ci-info: 3.9.0
|
||||
dev: false
|
||||
|
||||
/@pnpm/logger@5.0.0:
|
||||
resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==}
|
||||
engines: {node: '>=12.17'}
|
||||
|
||||
Reference in New Issue
Block a user