npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@b64hub/sfpm-cli

v0.1.0

Published

Salesforce package manager - CLI

Readme

sfp

sfp is the devops tool Salesforce engineers have been waiting for

oclif Version Downloads/week

Usage

$ npm install -g @b64hub/sfpm-cli
$ sfpm COMMAND
running command...
$ sfpm (--version)
@b64hub/sfpm-cli/0.1.0 darwin-arm64 node-v24.4.1
$ sfpm --help [COMMAND]
USAGE
  $ sfpm COMMAND
...

Commands

sfpm bootstrap

Bootstrap SFPM packages into a production org

USAGE
  $ sfpm bootstrap -o <value> [-f] [--json | -q] [-t
    core|pool|full]

FLAGS
  -f, --force               force re-install even if packages are already installed
  -o, --target-org=<value>  (required) target org username (must also be a DevHub)
  -q, --quiet               only show errors
  -t, --tier=<option>       package tier to install
                            <options: core|pool|full>
      --json                output as JSON for CI/CD

DESCRIPTION
  Bootstrap SFPM packages into a production org

EXAMPLES
  $ sfpm bootstrap -o my-prod-org

  $ sfpm bootstrap -o my-prod-org --tier core

  $ sfpm bootstrap -o my-prod-org --tier full --json

  $ sfpm bootstrap -o my-prod-org --force

See code: dist/commands/bootstrap.js

sfpm build PACKAGES

build one or more packages

USAGE
  $ sfpm build PACKAGES... [--async-validation] [-b
    <value>] [-f] [-k <value>] [--json | -q] [--no-dependencies] [--skip-validation] [-t <value>] [-v <value>] [--turbo]
    [-w <value>]

ARGUMENTS
  PACKAGES...  package(s) to build

FLAGS
  -b, --build-number=<value>      build number
  -f, --force                     [env: SFPM_FORCE_BUILD] build even if no source changes detected
  -k, --installation-key=<value>  installation key
  -q, --quiet                     only show errors
  -t, --tag=<value>               tag for the build
  -v, --target-dev-hub=<value>    [env: SF_DEV_HUB] target dev hub username
  -w, --wait=<value>              [default: 120] timeout in minutes for package version creation
      --async-validation          return immediately after creating unlocked package versions without waiting for
                                  validation to complete
      --json                      output as JSON for CI/CD
      --no-dependencies           build the specified packages without their transitive dependencies
      --skip-validation           skip validation
      --turbo                     single-package mode for external orchestrators (implies --no-dependencies
                                  --skip-validation)

DESCRIPTION
  build one or more packages

EXAMPLES
  $ sfpm build my-package -v my-devhub

  $ sfpm build my-package -v my-devhub --quiet

  $ sfpm build my-package -v my-devhub --json

  $ sfpm build my-package -v my-devhub --force

  $ sfpm build package-a package-b -v my-devhub

See code: dist/commands/build.js

sfpm build status

check the status of async package validation watchers

USAGE
  $ sfpm build status [--clean] [--json] [--poll] [-v <value>]

FLAGS
  -v, --target-dev-hub=<value>  [env: SF_DEV_HUB] target dev hub username (required with --poll)
      --clean                   remove completed and stale state files
      --json                    output as JSON
      --poll                    poll Salesforce directly for current status (requires --target-dev-hub)

DESCRIPTION
  check the status of async package validation watchers

EXAMPLES
  $ sfpm build status

  $ sfpm build status --json

  $ sfpm build status --poll -v my-devhub

  $ sfpm build status --clean

See code: dist/commands/build/status.js

sfpm deploy PACKAGES

deploy one or more packages from local project source

USAGE
  $ sfpm deploy PACKAGES... -o <value> [-f] [--json | -q]
    [--no-dependencies] [-l NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg] [--turbo]

ARGUMENTS
  PACKAGES...  package(s) to deploy

FLAGS
  -f, --force                force deploy even if already installed
  -l, --test-level=<option>  deployment test level
                             <options: NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg>
  -o, --target-org=<value>   (required) [env: SF_TARGET_ORG] target org username
  -q, --quiet                only show errors
      --json                 output as JSON for CI/CD
      --no-dependencies      only deploy the specified packages, skip transitive dependencies
      --turbo                single-package mode for external orchestrators (implies --no-dependencies --force)

DESCRIPTION
  deploy one or more packages from local project source

EXAMPLES
  $ sfpm deploy my-package -o my-sandbox

  $ sfpm deploy my-package -o my-sandbox --quiet

  $ sfpm deploy my-package -o my-sandbox --json

  $ sfpm deploy package-a package-b -o my-sandbox

See code: dist/commands/deploy.js

sfpm deploy artifact PACKAGES

deploy one or more packages from built artifacts using source-deploy

USAGE
  $ sfpm deploy artifact PACKAGES... -o <value> [-f] [-k <value>]
    [--json | -q] [--no-dependencies]

ARGUMENTS
  PACKAGES...  package(s) to deploy

FLAGS
  -f, --force                     force deploy even if already installed
  -k, --installation-key=<value>  installation key for unlocked packages
  -o, --target-org=<value>        (required) [env: SF_TARGET_ORG] target org username
  -q, --quiet                     only show errors
      --json                      output as JSON for CI/CD
      --no-dependencies           only deploy the specified packages, skip transitive dependencies

DESCRIPTION
  deploy one or more packages from built artifacts using source-deploy

EXAMPLES
  $ sfpm deploy artifact my-package -o my-sandbox

  $ sfpm deploy artifact my-package -o my-sandbox --quiet

  $ sfpm deploy artifact my-package -o my-sandbox --json

  $ sfpm deploy artifact package-a package-b -o my-sandbox

See code: dist/commands/deploy/artifact.js

sfpm hello PERSON

Say hello

USAGE
  $ sfpm hello PERSON -f <value>

ARGUMENTS
  PERSON  Person to say hello to

FLAGS
  -f, --from=<value>  (required) Who is saying hello

DESCRIPTION
  Say hello

EXAMPLES
  $ sfpm hello friend --from oclif
  hello friend from oclif! (./src/commands/hello/index.ts)

See code: dist/commands/hello/index.js

sfpm hello world

Say hello world

USAGE
  $ sfpm hello world

DESCRIPTION
  Say hello world

EXAMPLES
  $ sfpm hello world
  hello world! (./src/commands/hello/world.ts)

See code: dist/commands/hello/world.js

sfpm help [COMMAND]

Display help for sfpm.

USAGE
  $ sfpm help [COMMAND...] [-n]

ARGUMENTS
  [COMMAND...]  Command to show help for.

FLAGS
  -n, --nested-commands  Include all nested commands in the output.

DESCRIPTION
  Display help for sfpm.

See code: @oclif/plugin-help

sfpm install PACKAGES

install one or more packages

USAGE
  $ sfpm install PACKAGES... -o <value> [-f] [-k <value>]
    [--json | -q] [--no-dependencies] [-l NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg] [--turbo]

ARGUMENTS
  PACKAGES...  package(s) to install

FLAGS
  -f, --force                     force reinstall even if already installed
  -k, --installation-key=<value>  installation key for unlocked packages
  -l, --test-level=<option>       deployment test level (for source deployments)
                                  <options: NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg>
  -o, --target-org=<value>        (required) [env: SF_TARGET_ORG] target org username
  -q, --quiet                     only show errors
      --json                      output as JSON for CI/CD
      --no-dependencies           only install the specified packages, skip transitive dependencies
      --turbo                     single-package mode for external orchestrators (implies --no-dependencies --force)

DESCRIPTION
  install one or more packages

EXAMPLES
  $ sfpm install my-package -o my-sandbox

  $ sfpm install my-package -o my-sandbox --quiet

  $ sfpm install my-package -o my-sandbox --json

  $ sfpm install package-a package-b -o my-sandbox

See code: dist/commands/install.js

sfpm plugins

List installed plugins.

USAGE
  $ sfpm plugins [--json] [--core]

FLAGS
  --core  Show core plugins.

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  List installed plugins.

EXAMPLES
  $ sfpm plugins

See code: @oclif/plugin-plugins

sfpm plugins add PLUGIN

Installs a plugin into sfpm.

USAGE
  $ sfpm plugins add PLUGIN... [--json] [-f] [-h] [-s | -v]

ARGUMENTS
  PLUGIN...  Plugin to install.

FLAGS
  -f, --force    Force npm to fetch remote resources even if a local copy exists on disk.
  -h, --help     Show CLI help.
  -s, --silent   Silences npm output.
  -v, --verbose  Show verbose npm output.

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Installs a plugin into sfpm.

  Uses npm to install plugins.

  Installation of a user-installed plugin will override a core plugin.

  Use the SFPM_NPM_LOG_LEVEL environment variable to set the npm loglevel.
  Use the SFPM_NPM_REGISTRY environment variable to set the npm registry.

ALIASES
  $ sfpm plugins add

EXAMPLES
  Install a plugin from npm registry.

    $ sfpm plugins add myplugin

  Install a plugin from a github url.

    $ sfpm plugins add https://github.com/someuser/someplugin

  Install a plugin from a github slug.

    $ sfpm plugins add someuser/someplugin

sfpm plugins:inspect PLUGIN...

Displays installation properties of a plugin.

USAGE
  $ sfpm plugins inspect PLUGIN...

ARGUMENTS
  PLUGIN...  [default: .] Plugin to inspect.

FLAGS
  -h, --help     Show CLI help.
  -v, --verbose

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Displays installation properties of a plugin.

EXAMPLES
  $ sfpm plugins inspect myplugin

See code: @oclif/plugin-plugins

sfpm plugins install PLUGIN

Installs a plugin into sfpm.

USAGE
  $ sfpm plugins install PLUGIN... [--json] [-f] [-h] [-s | -v]

ARGUMENTS
  PLUGIN...  Plugin to install.

FLAGS
  -f, --force    Force npm to fetch remote resources even if a local copy exists on disk.
  -h, --help     Show CLI help.
  -s, --silent   Silences npm output.
  -v, --verbose  Show verbose npm output.

GLOBAL FLAGS
  --json  Format output as json.

DESCRIPTION
  Installs a plugin into sfpm.

  Uses npm to install plugins.

  Installation of a user-installed plugin will override a core plugin.

  Use the SFPM_NPM_LOG_LEVEL environment variable to set the npm loglevel.
  Use the SFPM_NPM_REGISTRY environment variable to set the npm registry.

ALIASES
  $ sfpm plugins add

EXAMPLES
  Install a plugin from npm registry.

    $ sfpm plugins install myplugin

  Install a plugin from a github url.

    $ sfpm plugins install https://github.com/someuser/someplugin

  Install a plugin from a github slug.

    $ sfpm plugins install someuser/someplugin

See code: @oclif/plugin-plugins

sfpm plugins link PATH

Links a plugin into the CLI for development.

USAGE
  $ sfpm plugins link PATH [-h] [--install] [-v]

ARGUMENTS
  PATH  [default: .] path to plugin

FLAGS
  -h, --help          Show CLI help.
  -v, --verbose
      --[no-]install  Install dependencies after linking the plugin.

DESCRIPTION
  Links a plugin into the CLI for development.

  Installation of a linked plugin will override a user-installed or core plugin.

  e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
  command will override the user-installed or core plugin implementation. This is useful for development work.


EXAMPLES
  $ sfpm plugins link myplugin

See code: @oclif/plugin-plugins

sfpm plugins remove [PLUGIN]

Removes a plugin from the CLI.

USAGE
  $ sfpm plugins remove [PLUGIN...] [-h] [-v]

ARGUMENTS
  [PLUGIN...]  plugin to uninstall

FLAGS
  -h, --help     Show CLI help.
  -v, --verbose

DESCRIPTION
  Removes a plugin from the CLI.

ALIASES
  $ sfpm plugins unlink
  $ sfpm plugins remove

EXAMPLES
  $ sfpm plugins remove myplugin

sfpm plugins reset

Remove all user-installed and linked plugins.

USAGE
  $ sfpm plugins reset [--hard] [--reinstall]

FLAGS
  --hard       Delete node_modules and package manager related files in addition to uninstalling plugins.
  --reinstall  Reinstall all plugins after uninstalling.

See code: @oclif/plugin-plugins

sfpm plugins uninstall [PLUGIN]

Removes a plugin from the CLI.

USAGE
  $ sfpm plugins uninstall [PLUGIN...] [-h] [-v]

ARGUMENTS
  [PLUGIN...]  plugin to uninstall

FLAGS
  -h, --help     Show CLI help.
  -v, --verbose

DESCRIPTION
  Removes a plugin from the CLI.

ALIASES
  $ sfpm plugins unlink
  $ sfpm plugins remove

EXAMPLES
  $ sfpm plugins uninstall myplugin

See code: @oclif/plugin-plugins

sfpm plugins unlink [PLUGIN]

Removes a plugin from the CLI.

USAGE
  $ sfpm plugins unlink [PLUGIN...] [-h] [-v]

ARGUMENTS
  [PLUGIN...]  plugin to uninstall

FLAGS
  -h, --help     Show CLI help.
  -v, --verbose

DESCRIPTION
  Removes a plugin from the CLI.

ALIASES
  $ sfpm plugins unlink
  $ sfpm plugins remove

EXAMPLES
  $ sfpm plugins unlink myplugin

sfpm plugins update

Update installed plugins.

USAGE
  $ sfpm plugins update [-h] [-v]

FLAGS
  -h, --help     Show CLI help.
  -v, --verbose

DESCRIPTION
  Update installed plugins.

See code: @oclif/plugin-plugins

sfpm pool delete

delete orgs from a pool

USAGE
  $ sfpm pool delete -t <value> -v <value> [--in-progress-only]
    [--json | -q] [--my-pool] [--type scratchOrg|sandbox]

FLAGS
  -q, --quiet                   only show errors
  -t, --tag=<value>             (required) pool tag to delete from
  -v, --target-dev-hub=<value>  (required) target hub org username or alias
      --in-progress-only        only delete orgs with "In Progress" status
      --json                    output as JSON
      --my-pool                 only delete orgs created by the current user
      --type=<option>           [default: scratchOrg] pool type: scratchOrg or sandbox
                                <options: scratchOrg|sandbox>

DESCRIPTION
  delete orgs from a pool

EXAMPLES
  $ sfpm pool delete --tag dev-pool -v my-devhub

  $ sfpm pool delete --tag sb-pool --type sandbox -v my-prod-org

  $ sfpm pool delete --tag dev-pool -v my-devhub --in-progress-only

  $ sfpm pool delete --tag dev-pool -v my-devhub --my-pool

  $ sfpm pool delete --tag dev-pool -v my-devhub --json

See code: dist/commands/pool/delete.js

sfpm pool fetch

fetch an org from a pool

USAGE
  $ sfpm pool fetch -t <value> -v <value> [--json | -q] [--limit
    <value>] [--my-pool] [--send-to <value>] [--source-tracking]

FLAGS
  -q, --quiet                   only show errors
  -t, --tag=<value>             (required) pool tag to fetch from
  -v, --target-dev-hub=<value>  (required) target hub org username or alias
      --json                    output as JSON
      --limit=<value>           max orgs to return when using --all
      --my-pool                 only fetch from orgs created by the current user
      --send-to=<value>         email org details to this address instead of local login
      --source-tracking         enable source tracking after fetch

DESCRIPTION
  fetch an org from a pool

EXAMPLES
  $ sfpm pool fetch --tag dev-pool -v my-devhub

  $ sfpm pool fetch --tag sb-pool --type sandbox -v my-prod-org

  $ sfpm pool fetch --tag dev-pool -v my-devhub --send-to [email protected]

  $ sfpm pool fetch --tag dev-pool -v my-devhub --all --limit 5

  $ sfpm pool fetch --tag dev-pool -v my-devhub --json

See code: dist/commands/pool/fetch.js

sfpm pool list

list orgs in a pool

USAGE
  $ sfpm pool list -t <value> -v <value> [--json | -q]
    [--my-pool] [--type scratchOrg|sandbox]

FLAGS
  -q, --quiet                   only show errors
  -t, --tag=<value>             (required) pool tag to query
  -v, --target-dev-hub=<value>  (required) target hub org username or alias
      --json                    output as JSON
      --my-pool                 only show orgs created by the current user
      --type=<option>           [default: scratchOrg] pool type: scratchOrg or sandbox
                                <options: scratchOrg|sandbox>

DESCRIPTION
  list orgs in a pool

EXAMPLES
  $ sfpm pool list --tag dev-pool -v my-devhub

  $ sfpm pool list --tag sb-pool --type sandbox -v my-prod-org

  $ sfpm pool list --tag dev-pool -v my-devhub --my-pool

  $ sfpm pool list --tag dev-pool -v my-devhub --json

See code: dist/commands/pool/list.js

sfpm pool provision

provision orgs to fill a pool

USAGE
  $ sfpm pool provision --max <value> -t <value> -v <value>
    [--batch-size <value>] [-d <value>] [--expiry-days <value>] [--group-name <value>] [--json | -q] [--license-type
    DEVELOPER|DEVELOPER PRO|FULL|PARTIAL] [--sandbox-name-pattern <value>] [--source-sandbox <value>] [--type
    scratchOrg|sandbox]

FLAGS
  -d, --definition-file=<value>       scratch org definition file
  -q, --quiet                         only show errors
  -t, --tag=<value>                   (required) pool tag
  -v, --target-dev-hub=<value>        (required) target hub org username or alias
      --batch-size=<value>            max concurrent org creations (default: 5)
      --expiry-days=<value>           scratch org expiry in days (default: 7)
      --group-name=<value>            sandbox activation user group name
      --json                          output as JSON
      --license-type=<option>         sandbox license type
                                      <options: DEVELOPER|DEVELOPER PRO|FULL|PARTIAL>
      --max=<value>                   (required) maximum number of orgs to allocate
      --sandbox-name-pattern=<value>  sandbox name prefix (e.g., SB → SB1, SB2, ...)
      --source-sandbox=<value>        source sandbox name to clone from
      --type=<option>                 [default: scratchOrg] pool type: scratchOrg or sandbox
                                      <options: scratchOrg|sandbox>

DESCRIPTION
  provision orgs to fill a pool

EXAMPLES
  $ sfpm pool provision --tag dev-pool --max 10 --definition-file config/project-scratch-def.json -v my-devhub

  $ sfpm pool provision --tag sb-pool --max 5 --type sandbox --sandbox-name-pattern SB --license-type DEVELOPER -v my-prod-org

  $ sfpm pool provision --tag dev-pool --max 10 --definition-file config/project-scratch-def.json -v my-devhub --json

See code: dist/commands/pool/provision.js

sfpm project

Overview of the project

USAGE
  $ sfpm project [-p]

FLAGS
  -p, --path  Display package paths

DESCRIPTION
  Overview of the project

EXAMPLES
  $ sfpm project

See code: dist/commands/project.js

sfpm project init

Verify project configuration and setup requirements

USAGE
  $ sfpm project init [-f]

FLAGS
  -f, --fix  Attempt to fix issues automatically

DESCRIPTION
  Verify project configuration and setup requirements

EXAMPLES
  $ sfpm project init

  $ sfpm project init --fix

See code: dist/commands/project/init/index.js

sfpm project init turbo

Initialize a turbo-native workspace for SFPM packages

USAGE
  $ sfpm project init turbo [--json] [-m] [--npm-scope <value>]
    [--package-manager pnpm|npm|yarn] [--workspace-dir <value>] [-y]

FLAGS
  -m, --migrate                   migrate from an existing sfdx-project.json
  -y, --yes                       skip confirmation prompts (use defaults)
      --json                      output result as JSON
      --npm-scope=<value>         npm scope for package names (e.g., @myorg)
      --package-manager=<option>  [default: pnpm] package manager to use
                                  <options: pnpm|npm|yarn>
      --workspace-dir=<value>     directory prefix for migrated packages (e.g., "packages")

DESCRIPTION
  Initialize a turbo-native workspace for SFPM packages

EXAMPLES
  $ sfpm project init turbo

  $ sfpm project init turbo --migrate

  $ sfpm project init turbo --migrate --npm-scope @myorg

  $ sfpm project init turbo --migrate --workspace-dir packages

  $ sfpm project init turbo --json

See code: dist/commands/project/init/turbo.js

sfpm project sync

Generate sfdx-project.json from workspace package.json files

USAGE
  $ sfpm project sync [--api-version <value>] [--json]

FLAGS
  --api-version=<value>  Override Salesforce API version (e.g., 63.0)
  --json                 output result as JSON

DESCRIPTION
  Generate sfdx-project.json from workspace package.json files

EXAMPLES
  $ sfpm project sync

  $ sfpm project sync --api-version 63.0

See code: dist/commands/project/sync.js

sfpm project version bump

Bump package versions in sfdx-project.json

USAGE
  $ sfpm project version bump [-a] [--dryrun] [-M] [-m] [-p <value>]
    [--patch] [-f <value>] [-o <value>] [-r <value>] [-v <value>]

FLAGS
  -M, --major                  Increment major number
  -a, --all                    Increment all package versions
  -f, --projectfile=<value>    [default: sfdx-project.json] Path to sfdx-project.json file
  -m, --minor                  Increment minor number
  -o, --targetorg=<value>      Specify the target org for diff comparison
  -p, --package=<value>        Specify the package to increment
  -r, --targetref=<value>      Specify the git reference for diff comparison
  -v, --versionnumber=<value>  Set a custom version number
      --dryrun                 Preview changes without saving to sfdx-project.json
      --patch                  Increment patch number (default)

DESCRIPTION
  Bump package versions in sfdx-project.json

EXAMPLES
  $ sfp project version bump --package mypackage --minor

  $ sfp project version bump --all --patch

  $ sfp project version bump --targetref main

  $ sfp project version bump --targetorg myorg

  $ sfp project version bump --package mypackage --versionnumber 2.0.0

  $ sfp project version bump --package mypackage --patch --projectfile path/to/sfdx-project.json

See code: dist/commands/project/version/bump.js