Socket
Socket
Sign inDemoInstall

workspaces-run

Package Overview
Dependencies
257
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    workspaces-run

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


Version published
Weekly downloads
2.3K
increased by27.76%
Maintainers
1
Created
Weekly downloads
 

Readme

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

FAQs

Last updated on 15 Feb 2023

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc