@b64hub/sfpm-cli
v0.1.0
Published
Salesforce package manager - CLI
Readme
sfp
sfp is the devops tool Salesforce engineers have been waiting for
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 bootstrapsfpm build PACKAGESsfpm build statussfpm deploy PACKAGESsfpm deploy artifact PACKAGESsfpm hello PERSONsfpm hello worldsfpm help [COMMAND]sfpm install PACKAGESsfpm pluginssfpm plugins add PLUGINsfpm plugins:inspect PLUGIN...sfpm plugins install PLUGINsfpm plugins link PATHsfpm plugins remove [PLUGIN]sfpm plugins resetsfpm plugins uninstall [PLUGIN]sfpm plugins unlink [PLUGIN]sfpm plugins updatesfpm pool deletesfpm pool fetchsfpm pool listsfpm pool provisionsfpm projectsfpm project initsfpm project init turbosfpm project syncsfpm project version bump
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 --forceSee 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-devhubSee 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 --cleanSee 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-sandboxSee 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-sandboxSee 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-sandboxSee 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 pluginsSee 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/somepluginsfpm 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 mypluginSee 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/somepluginSee 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 mypluginSee 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 mypluginsfpm 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 mypluginSee 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 mypluginsfpm 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 --jsonSee 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 --jsonSee 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 --jsonSee 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 --jsonSee 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 projectSee 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 --fixSee 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 --jsonSee 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.0See 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.jsonSee code: dist/commands/project/version/bump.js
