hardis:scratch:create
Description
Command Behavior
Creates and fully initializes a Salesforce scratch org with complete development environment setup.
This command is a comprehensive scratch org provisioning tool that automates the entire process of creating, configuring, and initializing a Salesforce scratch org for development work. It handles everything from basic org creation to advanced configuration including package installation, metadata deployment, and data initialization.
Key functionalities:
- Intelligent Org Management: Automatically generates unique scratch org aliases based on username, git branch, and timestamp, with options to reuse existing orgs or force creation of new ones.
- Scratch Org Pool Integration: Supports fetching pre-configured scratch orgs from pools for faster development cycles and CI/CD optimization.
- Custom Scratch Definition: Dynamically builds project-scratch-def.json files with user-specific configurations including email, username patterns, and org shape settings (set variable SCRATCH_ORG_SHAPE to use org shapes).
- Package Installation: Automatically installs all configured packages defined in
installedPackagesconfiguration property. - Metadata Deployment: Pushes source code and deploys metadata using optimized deployment strategies for scratch org environments.
- Permission Set Assignment: Assigns specified permission sets defined in
initPermissionSetsconfiguration to the scratch org user. - Apex Script Execution: Runs custom Apex initialization scripts defined in
scratchOrgInitApexScriptsfor org-specific setup. - Data Loading: Loads initial data using SFDMU data packages from
dataPackagesconfiguration for realistic development environments. - User Configuration: Automatically configures the scratch org admin user with proper names, email, country settings, and marketing user permissions.
- Password Generation: Creates and stores secure passwords for easy scratch org access during development.
- CI/CD Integration: Provides specialized handling for continuous integration environments including automated cleanup and pool management.
- Error Handling: Comprehensive error recovery including scratch org cleanup on failure and detailed troubleshooting messages.
The command configuration can be customized using:
config/.sfdx-hardis.ymlfile with properties likeinstalledPackages,initPermissionSets,scratchOrgInitApexScripts, anddataPackages.- Environment variable SCRATCH_ORG_SHAPE with shape org id, if you want to use org shapes
Technical explanations
The command's technical implementation involves:
- Configuration Management: Loads hierarchical configuration from
.sfdx-hardis.yml, branch-specific, and user-specific configuration files usinggetConfig('user'). - Alias Generation Logic: Creates intelligent scratch org aliases using username, git branch, timestamp patterns with CI and pool prefixes for different environments.
- Scratch Org Definition Building: Dynamically constructs
project-scratch-def.jsonwith user email, custom usernames, org shapes, and feature flags like StateAndCountryPicklist and MarketingUser. - Pool Integration: Implements scratch org pool fetching using
fetchScratchOrgfor rapid org provisioning in development and CI environments. - Salesforce CLI Integration: Executes
sf org create scratchcommands with proper parameter handling including wait times, duration, and dev hub targeting. - Package Installation Pipeline: Uses
installPackagesutility to install managed and unmanaged packages with dependency resolution and error handling. - Metadata Deployment: Leverages
initOrgMetadatasfor optimized source pushing and metadata deployment specific to scratch org environments. - Permission Set Assignment: Implements
initPermissionSetAssignmentsfor automated permission set assignment to scratch org users. - Apex Script Execution: Runs custom Apex initialization scripts using
initApexScriptsfor org-specific configuration and setup. - Data Loading Integration: Uses SFDMU integration through
initOrgDatafor comprehensive data loading from configured data packages. - User Management: Performs SOQL queries and DML operations to configure scratch org users with proper names, emails, country codes, and permission flags.
- Authentication Management: Handles SFDX auth URL generation and storage for CI/CD environments and scratch org pool management.
- Error Recovery: Implements comprehensive error handling with scratch org cleanup, pool management, and detailed error messaging for troubleshooting.
- WebSocket Integration: Provides real-time status updates and file reporting through WebSocket connections for VS Code extension integration.
Parameters
| Name | Type | Description | Default | Required | Options |
|---|---|---|---|---|---|
| debug -d |
boolean | Activate debug mode (more logs) | |||
| flags-dir | option | undefined | |||
| forcenew -n |
boolean | If an existing scratch org exists, do not reuse it but create a new one | |||
| json | boolean | Format output as json. | |||
| pool | boolean | Creates the scratch org for a scratch org pool | |||
| skipauth | boolean | Skip authentication check when a default username is required | |||
| target-dev-hub -v |
option | undefined | |||
| websocket | option | Websocket host:port for VsCode SFDX Hardis UI integration |
Examples
$ sf hardis:scratch:create