Salesforce CLI v44 Release Notes

Here are the new and changed features in recent updates of the Salesforce CLI and the salesforcedx plug-in.

Run sfdx version to display the version of the Salesforce CLI installed on your computer. Run sfdx plugins --core to display the version of the installed salesforcedx plug-in.

Run sfdx update to update both the CLI and the salesforcedx plug-in to the latest available version.

Note: As a beta feature, second-generation managed packages and non-source-tracked org commands are a preview and aren't part of the "Services" under your master subscription agreement with Salesforce. Use these features at your sole discretion, and make your purchase decisions only on the basis of generally available products and features. Salesforce doesn't guarantee general availability of these features within any particular time frame or at all, and we can discontinue them at any time. These features are for evaluation purposes only, not for production use. They're offered as is and aren't supported, and Salesforce has no liability for any harm or damage arising out of or in connection with them. All restrictions, Salesforce reservation of rights, obligations concerning the Services, and terms for related Non-Salesforce Applications and Content apply equally to your use of these features. You can provide feedback and suggestions for second-generation managed packages in the Packaging 2 Beta group in the Trailblazer Community. You can provide feedback and suggestions for non-source-tracked org commands in the Salesforce DX group in the Trailblazer Community.

Note: We provide Scratch Org Snapshot to selected customers through a pilot program that requires agreement to specific terms and conditions. To be nominated to participate in the program, contact Salesforce. Pilot programs are subject to change, and we can't guarantee acceptance. Scratch Org Snapshot isn't generally available unless or until Salesforce announces its general availability in documentation or in press releases or public statements. We can't guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features. For information on enabling this feature in your org, contact Salesforce.

Click here for the v43 release notes.

44.11.0 (December 13, 2018)

44.10.0 (December 6, 2018)

44.9.0 (November 29, 2018)

44.8.0 (November 20, 2018)

44.7.0 (November 15, 2018)

44.6.0 (November 8, 2018)

44.5.0 (November 1, 2018)

44.4.0 (October 25, 2018)

44.3.0 (October 18, 2018)

44.2.0 (October 13, 2018)

Welcome to the first release of the Salesforce CLI v44 in Winter '19. We have several new commands and parameters, as well as some changes to existing commands and parameters. Here's what's changed.

Uninstall the Pre-Release Version of the CLI

If you installed the pre-release version 44 of the CLI, uninstall it, then run the update command.

sfdx plugins:uninstall salesforcedx
sfdx update

New Commands

These new commands are available in Salesforce CLI v44.

force:source:delete (beta) Deletes metadata from a non-source-tracked org, such as a sandbox, and from your local project. You can indicate a comma-delimited list of local paths or of individual metadata components.

force:source:deploy (beta) Deploys source from your project to a non-source-tracked org. Unlike the force:source:push command for scratch orgs (source-tracked orgs), you indicate the specific set of metadata to deploy. This command overwrites all corresponding metadata in the org with the deployed local files.

force:source:retrieve (beta) Retrieves source from a non-source-tracked org to your project. Unlike the force:source:pull command for scratch orgs (source-tracked orgs), with force:source:retrieve you indicate the specific set of metadata to retrieve. This command overwrites all local files with the metadata retrieved from the org. The retrieved metadata is in source format.

The Scratch Org Snapshot commands are available as part of an invitation-only pilot in late October 2018.

force:org:snapshot:create (pilot) Creates a snapshot of an existing scratch org to use as a basis for scratch org creations. A snapshot reflects the state of a scratch org when the snapshot is created. It contains scratch org shape information (edition, features, and licenses), installed packages, metadata, and test data.

force:org:snapshot:delete (pilot) Deletes a snapshot.

force:org:snapshot:get (pilot) Returns information for a specified snapshot.

force:org:snapshot:list (pilot) Lists all snapshots associated with a Dev Hub.

Changed Commands

The functionality for these commands changed in Salesforce CLI v44.

force:mdapi:convert This command escapes double quotes when converting from metadata format to the source format.

force:package:install, force:package:uninstall If you run these commands using the package version alias, you must run them from within a Salesforce DX project folder. If you specify the package version ID (which starts with 04t), you can run them outside of a DX project.

force:package:version:list The output includes a new column that indicates whether the package version is protected by an installation key.

force:source:push Deployment errors show the project path.

force:source:pull If a metadata name has special characters (such as forward slashes, backslashes, or quotation marks), we encode the file name on the local file system for all operating systems. For example, if you pull a custom profile called Custom: Marketing Profile, the colon is encoded in the resulting file name.

Custom%3A Marketing Profile.profile-meta.xml

If you reference a file name with special characters in .forceignore, use the encoded file name.

If you use package version IDs instead of aliases, you can now use 04t package IDs for all force:package:version commands instead of a mix of 04t (subscriber package version) and 05i (package version) IDs. However, we strongly recommend using aliases for all force:package commands and in the sfdx-project.json file.

New Parameters

This command has a new parameter in Salesforce CLI v44.

force:project:create Use the --manifest | -x parameter to generate a default manifest (package.xml) for fetching Apex, Visualforce, Lightning components, and static resources.

Changed Parameters

These parameters have changed in Salesforce CLI v44.

force:package:create --path | -r The --path | -r parameter is required. This parameter ignores trailing slashes. For example, the CLI treats both force-app and force-app/ the same.

force:package:version:update We renamed several parameters to make them consistent with the parameters for force:package:version:create.

Previous ParameterCurrent Parameter
--name or -n--versionname or -a
--description or -n--versiondescription or -e
--package2versionid or -i--package or -p

Package Version in Salesforce DX Project File

You can indicate a package version with a build number when defining a dependent package in the sfdx-project.json file. Previously, you had to indicate the LATEST keyword as the build number.

"dependencies": [
   {
       "package": "0Hoxxx",
       "versionNumber": "1.1.0.3"
   }
]

New Environment Variables

SFDX_MDAPI_TEMP_DIR

Normally, when you run some CLI commands, a temporary directory with all the metadata is created then deleted upon successful completion of the command. However, retaining these files can be useful for several reasons. You can debug problems that occur during command execution. You can use the generated package.xml when running subsequent commands, or as a starting point for creating a manifest that includes all the metadata you care about.

To retain all the metadata in a specified directory path when you run these commands, set the SFDX_MDAPI_TEMP_DIR environment variable:

Example:

SFDX_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata

SFDX_JSON_TO_STDOUT

You can send Salesforce CLI error output to stdout by setting the SFDX_JSON_TO_STDOUT environment variable to true. By default, Salesforce CLI sends output to stdout when a command succeeds, and to stderr if a command fails. Setting this environment variable to true is particularly helpful for scripting use cases. We plan to send Salesforce CLI error output to stdout by default in CLI v45.