Wondering what’s next for npm?Check out our public roadmap! »

    workspaces-run
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.1 • Public • Published

    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.

    Install

    npm i workspaces-run

    DownloadsWeekly Downloads

    1,988

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    43.6 kB

    Total Files

    28

    Last publish

    Collaborators

    • avatar