cli

[EXPERIMENT]: This Salesforce CLI the focuses on a cleaner user experience for ALL Salesforce functionality. It is in heavy development will be changing rapidly. More information will be added to this repository in the near-future.
Usage
$ npm install -g @salesforce/cli
$ sf COMMAND
running command...
$ sf (-v|--version|version)
@salesforce/cli/0.0.26 linux-x64 node-v14.17.3
$ sf --help [COMMAND]
USAGE
$ sf COMMAND
...
Commands
sf deploy
This command must be run from within a project.
USAGE
$ sf deploy [--interactive]
FLAGS
--interactive Force the CLI to prompt for all deployment inputs.
DESCRIPTION
Deploy a project interactively to any Salesforce environment.
This command must be run from within a project.
The command first analyzes your project, your active or logged-into environments, and local defaults to determine what
to deploy and where to deploy it. The command then prompts you for information about this particular deployment and
provides intelligent choices based on its analysis.
For example, if your local project contains a source directory with metadata files in source format, the command asks
if you want to deploy that Salesforce app to an org. The command lists your connected orgs and asks which one you want
to deploy to. If the command finds Apex tests, it asks if you want to run them and at which level.
Similarly, if the command finds a local functions directory, the command prompts if you want to deploy it and to which
compute environment. The command prompts and connects you to a compute environment of your choice if you’re not
currently connected to any.
The command stores your responses in a local file and uses them as defaults when you rerun the command. Specify
--interactive to force the command to reprompt.
Use this command for quick and simple deploys. For more complicated deployments, use the environment-specific
commands, such as "sf project deploy org", that provide additional flags.
EXAMPLES
Deploy a project and use stored values from a previous command run:
$ sf deploy
Reprompt for all deployment inputs:
$ sf deploy --interactive
See code: @salesforce/plugin-deploy-retrieve
sf deploy metadata
You must run this command from within a project.
USAGE
$ sf deploy metadata [--json] [-m <value>] [-x <value>] [-d <value>] [--target-org <value>] [-l
NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg] [--wait <value>]
FLAGS
-d, --deploy-dir=<value>... Path to the local source files to deploy.
-l, --test-level=<option> [default: NoTestRun] Deployment Apex testing level.
<options: NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg>
-m, --metadata=<value>... Metadata component names to deploy.
-x, --manifest=<value> Full file path for manifest (package.xml) of components to deploy.
--target-org=<value> Login username or alias for the target org.
--wait=<value> [default: 33] Number of minutes to wait for command to complete and display results.
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Deploy metadata in source format to an org from your local project.
You must run this command from within a project.
The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your
source with the versions in your org.
To run the command asynchronously, set --wait to 0, which immediately returns the job ID. This way, you can continue
to use the CLI. By default the command waits to finish no matter how long the deployment takes.
To deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with
multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax
applies to --manifest and --deploy-dir.
EXAMPLES
Deploy the source files in a directory:
$ sf deploy metadata --deploy-dir path/to/source
Deploy a specific Apex class and the objects whose source is in a directory (both examples are equivalent):
$ sf deploy metadata --deploy-dir path/to/apex/classes/MyClass.cls path/to/source/objects
$ sf deploy metadata --deploy-dir path/to/apex/classes/MyClass.cls --deploy-dir path/to/source/objects
Deploy all Apex classes:
$ sf deploy metadata --metadata ApexClass
Deploy a specific Apex class:
$ sf deploy metadata --metadata ApexClass:MyApexClass
Deploy all custom objects and Apex classes (both examples are equivalent):
$ sf deploy metadata --metadata CustomObject ApexClass
$ sf deploy metadata --metadata CustomObject --metadata ApexClass
Deploy all Apex classes and a profile that has a space in its name:
$ sf deploy metadata --metadata ApexClass --metadata "Profile:My Profile"
Deploy all components listed in a manifest:
$ sf deploy metadata --manifest path/to/package.xml
Run the tests that aren’t in any managed packages as part of a deployment:
$ sf deploy metadata --metadata ApexClass --test-level RunLocalTests
FLAG DESCRIPTIONS
-d, --deploy-dir=<value>... Path to the local source files to deploy.
The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder
(in which case the operation is applied to all metadata types in the directory and its subdirectories).
If you specify this flag, don’t specify --metadata or --manifest.
-l, --test-level=NoTestRun|RunSpecifiedTests|RunLocalTests|RunAllTestsInOrg Deployment Apex testing level.
Valid values are:
- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as
sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.
- RunSpecifiedTests — Runs only the tests that you specify with the --run-tests flag. Code coverage requirements
differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of
75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and
trigger individually and is different than the overall coverage percentage.
- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed packages.
This test level is the default for production deployments that include Apex classes or triggers.
- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.
If you don’t specify a test level, the default behavior depends on the contents of your deployment package. For more
information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.
-x, --manifest=<value> Full file path for manifest (package.xml) of components to deploy.
All child components are included. If you specify this flag, don’t specify --metadata or --deploy-dir.
--target-org=<value> Login username or alias for the target org.
Overrides your default org.
--wait=<value> Number of minutes to wait for command to complete and display results.
If the command continues to run after the wait period, the CLI returns control of the terminal window to you.
sf env display
Specify an environment with either the username you used when you ran the "sf login" command or the environment's alias. Run "sf env list" to view all your environments and their aliases.
USAGE
$ sf env display [--json] [-e <value>]
FLAGS
-e, --target-env=<value> Environment alias or login user.
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Display details about an environment.
Specify an environment with either the username you used when you ran the "sf login" command or the environment's
alias. Run "sf env list" to view all your environments and their aliases.
Output depends on the type of environment. For example, scratch org details include the access token, alias, username
of the associated Dev Hub, the creation and expiration date, the generated scratch org username, and more. Compute
environment details include the associated orgs, the list of functions, the project name, and more.
EXAMPLES
Display details about a scratch org with alias my-scratch-org:
$ sf env display --target-env=my-scratch-org
Specify a username instead of an alias:
$ sf env display --target-env=test-123456-abcdefg@example.com
Specify JSON format and redirect output into a file:
$ sf env display --target-env=my-scratch-org --json > tmp/MyOrdDesc.json
sf env list
By default, the command displays only active environments. For orgs, active means unexpired scratch orgs and orgs you’re currently logged into. For compute environments, active means the environments connected to orgs you’re currently logged into. Use the --all flag to list expired or deleted scratch orgs and compute environments that aren’t connected to logged-in orgs. Warning: the latter list could be very long.
USAGE
$ sf env list [--json] [-x] [--columns <value>] [--csv] [--filter <value>] [--no-header] [--no-truncate]
[--output csv|json|yaml] [--sort <value>]
FLAGS
-x, --extended Show extra columns.
--columns=<value>... Only show provided columns.
--csv Output in csv format [alias: --output=csv]
--filter=<value> Filter property by partial string matching.
--no-header Hide table header from output.
--no-truncate Do not truncate output to fit screen.
--output=<option> Output in a more machine friendly format.
<options: csv|json|yaml>
--sort=<value> Property to sort by (prepend '-' for descending).
GLOBAL FLAGS
--json format output as json
DESCRIPTION
List the environments you’ve created or logged into.
By default, the command displays only active environments. For orgs, active means unexpired scratch orgs and orgs
you’re currently logged into. For compute environments, active means the environments connected to orgs you’re
currently logged into. Use the --all flag to list expired or deleted scratch orgs and compute environments that aren’t
connected to logged-in orgs. Warning: the latter list could be very long.
Output is displayed in multiple tables, one for each environment type. For example, the Salesforce Orgs table lists
the non-scratch orgs you’re logged into, such as sandboxes, Dev Hubs, production orgs, and so on. Scratch orgs and
compute environments get their own tables.
For non-scratch orgs, the Username column refers to the user you logged into the org with. For scratch orgs it refers
to the username that was generated for you when you created the scratch org. The first column indicates the default
environment for each type.
Run "sf env display" to view details about a specific environment.
EXAMPLES
List all environments:
$ sf env list --all
Filter the output to list only connected orgs. Rows from only the Salesforce Orgs table are displayed because it’s
the only table with a "Status" column.
$ sf env list --filter "Status=Connected"
List only scratch orgs that expire after May 30, 2021:
$ sf env list --filter "Expiration>2021-05-30"
Display only the Alias column and sort the aliases in descending order:
$ sf env list --sort "-Alias" --columns "Alias"
sf env open
You can open the following types of environments in a web browser: scratch orgs, sandboxes, Dev Hubs, and production orgs.
USAGE
$ sf env open [--json] [-p <value>] [-r] [-e <value>] [--browser <value>]
FLAGS
-e, --target-env=<value> Environment login user or alias to open.
-p, --path=<value> Path to append to the end of the login URL.
-r, --url-only Display the URL, but don’t launch it in a browser.
--browser=<value> Browser in which to open the environment.
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Open an environment in your web browser.
You can open the following types of environments in a web browser: scratch orgs, sandboxes, Dev Hubs, and production
orgs.
If you run the command without flags, it attempts to open your default environment in your default web browser. Run
"sf env list" to view your default environment.
Each of your environments is associated with an instance URL, such as https://login.salesforce.com. To open a specific
web page, specify the portion of the URL after "<URL>/" with the --path flag, such as /apex/YourPage to open a
Visualforce page.
EXAMPLES
Open your default environment:
$ sf env open
Open the Visualforce page /apex/StartHere in a scratch org with alias test-org:
$ sf env open --target-env test-org --path /apex/StartHere
View the URL but don't launch it in a browser:
$ sf env open --target-env test-org --path /apex/StartHere --url-only
Open the environment in the Google Chrome browser:
$ sf env open --target-env test-org --path /apex/StartHere --browser chrome
FLAG DESCRIPTIONS
-e, --target-env=<value> Environment login user or alias to open.
Specify the login user or alias that’s associated with the environment. For scratch orgs, the login user is
generated by the command that created the scratch org. You can also set an alias for the scratch org when you create
it.
For Dev Hubs, sandboxes, and production orgs, specify the alias you set when you logged into the org with "sf
login".
--browser=<value> Browser in which to open the environment.
You can specify that the environment open in one of the following browsers: Firefox, Safari, Google Chrome, or
Windows Edge. If you don’t specify --browser, the environment opens in your default browser.
sf help [COMMAND]
display help for sf
USAGE
$ sf help [COMMAND] [--all]
ARGUMENTS
COMMAND command to show help for
FLAGS
--all see all commands in CLI
DESCRIPTION
display help for sf
See code: @oclif/plugin-help
sf login
Logging into an environment authorizes the CLI to run other commands that connect to that environment, such as deploying or retrieving a project to and from an org.
USAGE
$ sf login
DESCRIPTION
Log interactively into an environment, such as a Salesforce org.
Logging into an environment authorizes the CLI to run other commands that connect to that environment, such as
deploying or retrieving a project to and from an org.
The command first prompts you to choose an environment from a list of available ones. It then opens a browser to the
appropriate login URL, such as https://login.salesforce.com for an org. Then, depending on the environment you choose,
the command prompts for other actions, such as giving the environment an alias or setting it as your default.
This command is fully interactive and has no flags other than displaying the command-line help. Each environment has
its own specific login command, such as "sf login org", which usually provide more flags than this interactive one.
For more information about the interactive prompts from this command, see the help for the environment-specific
command, such as "sf login org --help".
EXAMPLES
- Log in interactively:
sf login
See code: @salesforce/plugin-login
sf login org
Opens a Salesforce instance URL in a web browser so you can enter your credentials and log in to your org. After you log in, you can close the browser window.
USAGE
$ sf login org [--json] [-a <value>] [-b <value>] [-i <value>] [-l <value>] [-d]
FLAGS
-a, --alias=<value> Alias for the org.
-b, --browser=<value> Browser in which to open the org.
-d, --set-default Set the org as the default that all org-related commands run against.
-i, --clientid=<value> OAuth client id (also called consumer key) of your custom connected app.
-l, --instance-url=<value> [default: https://login.salesforce.com] URL of the instance that the org lives on.
(defaults to https://login.salesforce.com)
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Log in to a Salesforce org using the web server flow.
Opens a Salesforce instance URL in a web browser so you can enter your credentials and log in to your org. After you
log in, you can close the browser window.
Logging into an org authorizes the CLI to run other commands that connect to that org, such as deploying or retrieving
a project. You can log into many types of orgs, such as sandboxes, Dev Hubs, Env Hubs, production orgs, and scratch
orgs.
We recommend that you set an alias when you log into an org. Aliases make it easy to later reference this org when
running commands that require it. If you don’t set an alias, you use the username that you specified when you logged
in to the org. If you run multiple commands that reference the same org, consider setting the org as your default.
By default, this command uses the global out-of-the-box connected app in your org. If you need more security or
control, such as setting the refresh token timeout or specifying IP ranges, create your own connected app using a
digital certificate. Make note of the consumer key (also called cliend id) that’s generated for you. Then specify the
consumer key with the --clientid flag.
EXAMPLES
Run the command with no flags to open the default Salesforce login page (https://login.salesforce.com):
$ sf login org
Log in to your Dev Hub org and set an alias that you reference later when you create a scratch org:
$ sf login org --alias dev-hub
Log in to a sandbox and set it as your default org:
$ sf login org --instance-url https://test.salesforce.com --set-default
Use --browser to specify a specific browser, such as Google Chrome:
$ sf login org --instance-url https://test.salesforce.com --set-default --browser chrome
Use your own connected app by specifying its consumer key (also called client ID):
$ sf login org --instance-url https://test.salesforce.com --set-default --browser chrome --clientid \
04580y4051234051
FLAG DESCRIPTIONS
-l, --instance-url=<value> URL of the instance that the org lives on. (defaults to https://login.salesforce.com)
If you specify --instance-url, the value overrides the sfdcLoginUrl value in your sfdx-project.json file.
To specify a My Domain URL, use the format https://yourcompanyname.my.salesforce.com.
To specify a sandbox, set --instance-url to https://test.salesforce.com.
sf login org jwt
Use this command in automated environments where you can’t interactively log in with a browser, such as in CI/CD scripts.
USAGE
$ sf login org jwt [--json] [-a <value>] [-l <value>] [-f <value> -u <value> -i <value>] [-d]
FLAGS
-a, --alias=<value> Alias for the org.
-d, --set-default Set the org as the default that all org-related commands run against.
-f, --jwt-key-file=<value> Path to a file containing the private key.
-i, --clientid=<value> OAuth client id (also called consumer key) of your custom connected app.
-l, --instance-url=<value> [default: https://login.salesforce.com] URL of the instance that the org lives on.
(defaults to https://login.salesforce.com)
-u, --username=<value> Username of the user logging in.
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Log in to a Salesforce org using a JSON web token (JWT).
Use this command in automated environments where you can’t interactively log in with a browser, such as in CI/CD
scripts.
Logging into an org authorizes the CLI to run other commands that connect to that org, such as deploying or retrieving
a project. You can log into many types of orgs, such as sandboxes, Dev Hubs, Env Hubs, production orgs, and scratch
orgs.
Complete these steps before you run this command:
1. Create a digital certificate (also called digital signature) and the private key to sign the certificate. You can
use your own key and certificate issued by a certification authority. Or use OpenSSL to create a key and a self-signed
digital certificate.
2. Store the private key in a file on your computer. When you run this command, you set the --jwt-key-file flag to
this file.
3. Create a custom connected app in your org using the digital certificate. Make note of the consumer key (also called
cliend id) that’s generated for you. Be sure the username of the user logging in is approved to use the connected app.
When you run this command, you set the --clientid flag to the consumer key.
We recommend that you set an alias when you log into an org. Aliases make it easy to later reference this org when
running commands that require it. If you don’t set an alias, you use the username that you specified when you logged
in to the org. If you run multiple commands that reference the same org, consider setting the org as your default.
EXAMPLES
Log into an org with username jdoe@example.org and on the default instance URL (https://login.salesforce.org). The
private key is stored in the file /Users/jdoe/JWT/server.key and the command uses the connected app with consumer
key (client id) 04580y4051234051.
$ sf login org jwt --username jdoe@example.org --jwt-key-file /Users/jdoe/JWT/server.key --clientid \
04580y4051234051
Set the org as the default and gives it an alias:
$ sf login org jwt --username jdoe@example.org --jwt-key-file /Users/jdoe/JWT/server.key --clientid \
04580y4051234051 --alias ci-org --set-default
Log in to a sandbox using URL https://test.salesforce.com:
$ sf login org jwt --username jdoe@example.org --jwt-key-file /Users/jdoe/JWT/server.key --clientid \
04580y4051234051 --alias ci-org --set-default --instance-url https://test.salesforce.com
FLAG DESCRIPTIONS
-l, --instance-url=<value> URL of the instance that the org lives on. (defaults to https://login.salesforce.com)
If you specify an --instance-url value, this value overrides the sfdcLoginUrl value in your sfdx-project.json file.
To specify a My Domain URL, use the format https://yourcompanyname.my.salesforce.com.
To specify a sandbox, set --instance-url to https://test.salesforce.com.
sf logout
USAGE
$ sf logout [--json]
GLOBAL FLAGS
--json format output as json
EXAMPLES
- Log out of all environments:
sf logout
See code: @salesforce/plugin-login
sf plugins
list installed plugins
USAGE
$ sf plugins [--core]
FLAGS
--core show core plugins
DESCRIPTION
list installed plugins
EXAMPLES
$ sf plugins
See code: @oclif/plugin-plugins
sf plugins:inspect PLUGIN...
displays installation properties of a plugin
USAGE
$ sf plugins:inspect PLUGIN...
ARGUMENTS
PLUGIN [default: .] plugin to inspect
FLAGS
-h, --help show CLI help
-v, --verbose
DESCRIPTION
displays installation properties of a plugin
EXAMPLES
$ sf plugins:inspect myplugin
sf plugins:install PLUGIN...
installs a plugin into the CLI
USAGE
$ sf plugins:install PLUGIN...
ARGUMENTS
PLUGIN plugin to install
FLAGS
-f, --force yarn install with force flag
-h, --help show CLI help
-v, --verbose
DESCRIPTION
installs a plugin into the CLI
Can be installed from npm or a git url.
Installation of a user-installed plugin will override a core plugin.
e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command
will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in
the CLI without the need to patch and update the whole CLI.
ALIASES
$ sf plugins add
EXAMPLES
$ sf plugins:install myplugin
$ sf plugins:install https://github.com/someuser/someplugin
$ sf plugins:install someuser/someplugin
sf plugins:link PLUGIN
links a plugin into the CLI for development
USAGE
$ sf plugins:link PLUGIN
ARGUMENTS
PATH [default: .] path to plugin
FLAGS
-h, --help show CLI help
-v, --verbose
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
$ sf plugins:link myplugin
sf plugins:uninstall PLUGIN...
removes a plugin from the CLI
USAGE
$ sf plugins:uninstall PLUGIN...
ARGUMENTS
PLUGIN plugin to uninstall
FLAGS
-h, --help show CLI help
-v, --verbose
DESCRIPTION
removes a plugin from the CLI
ALIASES
$ sf plugins unlink
$ sf plugins remove
sf plugins update
update installed plugins
USAGE
$ sf plugins update [-h] [-v]
FLAGS
-h, --help show CLI help
-v, --verbose
DESCRIPTION
update installed plugins
sf retrieve metadata
You must run this command from within a project.
USAGE
$ sf retrieve metadata [--json] [-a <value>] [-x <value> | -m <value> | -d <value>] [-n <value>] [-t <value>] [-w
<value>]
FLAGS
-a, --api-version=<value> Target API version for the retrieve.
-d, --source-dir=<value>... File paths for source to retrieve from the org.
-m, --metadata=<value>... Metadata component names to retrieve.
-n, --package-name=<value>... Package names to retrieve.
-t, --target-org=<value> Login username or alias for the target org.
-w, --wait=<value> [default: 33] Number of minutes to wait for the command to complete and display results
to the terminal window.
-x, --manifest=<value> File path for the manifest (package.xml) that specifies the components to retrieve.
GLOBAL FLAGS
--json format output as json
DESCRIPTION
Retrieve metadata in source format from an org to your local project.
You must run this command from within a project.
The source you retrieve overwrites the corresponding source files in your local project. This command doesn’t attempt
to merge the source from your org with your local source files.
To retrieve multiple metadata components, either use multiple --metadata <name> flags or use a single --metadata flag
with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same
syntax applies to --manifest and --source-dir.
EXAMPLES
Retrieve the source files in a directory:
$ sf retrieve metadata --source-dir path/to/source
Retrieve a specific Apex class and the objects whose source is in a directory (both examples are equivalent):
$ sf retrieve metadata --source-dir path/to/apex/classes/MyClass.cls path/to/source/objects
$ sf retrieve metadata --source-dir path/to/apex/classes/MyClass.cls --source-dir path/to/source/objects
Retrieve all Apex classes:
$ sf retrieve metadata --metadata ApexClass
Retrieve a specific Apex class:
$ sf retrieve metadata --metadata ApexClass:MyApexClass
Retrieve all custom objects and Apex classes (both examples are equivalent):
$ sf retrieve metadata --metadata CustomObject ApexClass
$ sf retrieve metadata --metadata CustomObject --metadata ApexClass
Retrieve all metadata components listed in a manifest:
$ sf retrieve metadata --manifest path/to/package.xml
Retrieve metadata from a package:
$ sf retrieve metadata --package-name MyPackageName
Retrieve metadata from multiple packages, one of which has a space in its name (both examples are equivalent):
$ sf retrieve metadata --package-name Package1 "PackageName With Spaces" Package3
$ sf retrieve metadata --package-name Package1 --package-name "PackageName With Spaces" --package-name Package3