🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

workspaces-run

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

workspaces-run

Run tasks/scripts across Yarn/Lerna/Bolt/etc workspaces.

1.0.2
latest
Source
npm
Version published
Weekly downloads
8.7K
5.78%
Maintainers
1
Weekly downloads
 
Created
Source

workspaces-run

Run tasks/scripts across Yarn/Lerna/Bolt/etc workspaces.

Install

npm install workspaces-run

CLI

Run a command across every workspace:

$ workspaces-run -- echo "hello world"
@project/workspace-one   | hello-world
@project/workspace-two   | hello-world
@project/workspace-three | hello-world

--parallel

$ workspaces-run --parallel -- script.sh
@project/workspace-one   | working...
@project/workspace-two   | working...
@project/workspace-three | working...
@project/workspace-one   | done.
@project/workspace-two   | done.
@project/workspace-three | done.

--parallel=physical-cores

# On a machine with 2 physical cores
$ workspaces-run --parallel=physical-cores -- script.sh
@project/workspace-one   | working...
@project/workspace-two   | working...
@project/workspace-one   | done.
@project/workspace-three | working...
@project/workspace-two   | done.
@project/workspace-three | done.

--parallel=<number>

$ workspaces-run --parallel=2 -- script.sh
@project/workspace-one   | working...
@project/workspace-two   | working...
@project/workspace-one   | done.
@project/workspace-three | working...
@project/workspace-two   | done.
@project/workspace-three | done.

--order-by-deps

# When "one" and "two" depend on "three"
$ workspaces-run --order-by-deps -- script.sh
@project/workspace-three | working...
@project/workspace-three | done.
@project/workspace-one   | working...
@project/workspace-one   | done.
@project/workspace-two   | working...
@project/workspace-two   | done.

--order-by-deps=<dependencyType>

# When "three" is in "devDependencies" of "one" but in "peerDependencies" of "two"
$ workspaces-run --order-by-deps=devDependencies -- script.sh
@project/workspace-two   | working...
@project/workspace-two   | done.
@project/workspace-three | working...
@project/workspace-three | done.
@project/workspace-one   | working...
@project/workspace-one   | done.

--continue-on-error

$ workspaces-run --continue-on-error -- script.sh
@project/workspace-one   | working...
@project/workspace-one   | Error!
@project/workspace-two   | working...
@project/workspace-two   | Error!
@project/workspace-three | working...
@project/workspace-three | done.

--no-prefix

$ workspaces-run --no-prefix -- script.sh
working...
done.
working...
done.
working...
done.

CLI Filtering

The task will be run on a workspace if all of the conditions are true.

  • When any of the --only patterns match the workspace package.json#name; and
  • When any of the --only-fs patterns match the workspace directory; and
  • When all of the --ignore patterns do not match the workspace package.json#name; and
  • When all of the --ignore-fs patterns do not match the workspace directory.

Patterns support any syntax available in micromatch:

workspaces-run --only-fs="**/path/to/dir/**"
workspaces-run --only="workspace-{one,two}"

Flags can be specified multiple times:

workspaces-run --only=<pattern> --only=<patern>

The flags --only-fs and --ignore-fs match against a relative path to the current working directory.

Library

import workspacesRun from "workspaces-run"

await workspacesRun({ cwd }, async (workspace, allWorkspaces) => {
  await doSomething(workspace)
})

opts.cwd (Required)

let cwd = process.cwd()

await workspacesRun({ cwd }, ...)

opts.parallel

await workspacesRun({ cwd, parallel: true }, ...)
await workspacesRun({ cwd, parallel: "physical-cores" }, ...)
await workspacesRun({ cwd, parallel: 3 }, ...)

opts.orderByDeps

await workspacesRun({ cwd, orderByDeps: true }, ...)
await workspacesRun({ cwd, orderByDeps: ["devDependencies"] }, ...)

opts.continueOnError

await workspacesRun({ cwd, continueOnError: true }, ...)

Library Filtering

The task will be run on a workspace if all of the conditions are true.

  • When any of the only patterns match the workspace package.json#name; and
  • When any of the onlyFs patterns match the workspace directory; and
  • When all of the ignore patterns do not match the workspace package.json#name; and
  • When all of the ignoreFs patterns do not match the workspace directory.

Patterns support any syntax available in micromatch:

await workspacesRun({
  cwd,
  only: ["workspace-{one,two}"],
  onlyFs: ["**/path/to/dir/**"],
}, ...)

The options onlyFs and ignoreFs match against a relative path to the cwd.

Keywords

workspaces

FAQs

Package last updated on 15 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts