Welcome, and thank you for your interest in contributing to the Salesforce CLI!
There are multiple ways you can contribute. Before you get started, please review our Code of Conduct to help us keep our OSS projects a safe and welcoming environment.
Did you find a bug? First, make sure the bug wasn't already reported by searching on the issues
section: https://github.com/forcedotcom/cli/issues.
If you cannot find a related issue, then open a new one and follow the bug template. Providing a minimal reproduction is highly encouraged as these help us to quickly identify the root cause of the issue.
Please report any security issue to [email protected] as soon as it is discovered.
We accept pull requests for bug fixes and feature requests for any issues labeled with help wanted
.
You can leave a comment in the issue you are interested to work on and we will assign it to you.
We work in branches off of main
, to create a PR you should:
- Fork the plugin/library repo you want to contribute to.
- Create a new branch:
git checkout -b fix-bug
- Make your changes and ensure all tests pass.
- Create a pull request
We use conventional commits in all of our repos. Our CI/CD pipeline relies on each commit type to decide whether or not to publish a new release and we enforce this using a git hook to run commitlint
, make sure to folow this convention, otherwise commitlint
will not allow you to commit your change.
Conventional Commits: https://www.conventionalcommits.org/en/v1.0.0/#summary
commitlint
: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
External contributors will be required to sign a Contributor's License Agreement. You can do so by going to: https://cla.salesforce.com/sign-cla.
Prerequisites:
- Clone the repo:
sf
:git clone https://github.com/salesforcecli/cli.git
- Install dependencies:
yarn install
- Build the project:
yarn build
- Run the CLI using the
bin/run
executable as:- macOS/linux:
bin/run
- Windows:
bin\run.cmd
- macOS/linux:
The sf
CLI is built from plugins, some are bundled and come installed with the CLI, others are installed on demand.
The bundled plugins are:
- plugin-apex
- plugin-auth
- plugin-data
- deploy-retrieve
- plugin-info
- plugin-limits
- plugin-login
- plugin-org
- plugin-schema
- plugin-settings
- plugin-sobject
- plugin-telemetry
- plugin-templates
- plugin-trust
- plugin-user
The just-in-time plugins that are installed the first time you run a command are:
- plugin-custom-metadata
- plugin-community
- plugin-dev
- plugin-env
- plugin-functions
- plugin-packaging
- plugin-signups
- sfdx-plugin-lwc-test
- sfdx-scanner
For an up-to-date list of CLI plugins and libraries, see: https://github.com/salesforcecli/status
For more information on how the sf
CLI is organized, see https://github.com/salesforcecli/cli/blob/main/ARCHITECTURE.md