{"id":13668402,"url":"https://github.com/nvuillam/sfdx-essentials","last_synced_at":"2025-08-20T18:32:47.601Z","repository":{"id":32633892,"uuid":"138001863","full_name":"nvuillam/sfdx-essentials","owner":"nvuillam","description":"Toolbox for Salesforce DX to provide some very helpful additional features to base sfdx commands","archived":false,"fork":false,"pushed_at":"2023-12-15T05:26:14.000Z","size":2973,"stargazers_count":53,"open_issues_count":8,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-12-10T02:11:00.889Z","etag":null,"topics":["essentials","plugin","salesforce","sfdx"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nvuillam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":["nvuillam"]}},"created_at":"2018-06-20T08:20:25.000Z","updated_at":"2024-12-03T12:58:47.000Z","dependencies_parsed_at":"2023-12-15T06:43:51.423Z","dependency_job_id":null,"html_url":"https://github.com/nvuillam/sfdx-essentials","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fsfdx-essentials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fsfdx-essentials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fsfdx-essentials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvuillam%2Fsfdx-essentials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nvuillam","download_url":"https://codeload.github.com/nvuillam/sfdx-essentials/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230445926,"owners_count":18227060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["essentials","plugin","salesforce","sfdx"],"created_at":"2024-08-02T08:00:33.700Z","updated_at":"2024-12-19T14:07:15.222Z","avatar_url":"https://github.com/nvuillam.png","language":"TypeScript","funding_links":["https://github.com/sponsors/nvuillam"],"categories":["Community supported plugins"],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable --\u003e\nSalesforce DX Essentials\n========================\n\n[![Version](https://img.shields.io/npm/v/sfdx-essentials.svg)](https://npmjs.org/package/sfdx-essentials)\n[![Downloads/week](https://img.shields.io/npm/dw/sfdx-essentials.svg)](https://npmjs.org/package/sfdx-essentials)\n[![Downloads/total](https://img.shields.io/npm/dt/sfdx-essentials.svg)](https://npmjs.org/package/sfdx-essentials)\n[![codecov](https://codecov.io/gh/nvuillam/sfdx-essentials/branch/master/graph/badge.svg)](https://codecov.io/gh/nvuillam/sfdx-essentials)\n[![Mega-Linter](https://github.com/nvuillam/sfdx-essentials/workflows/Mega-Linter/badge.svg?branch=master)](https://github.com/nvuillam/mega-linter#readme)\n[![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/sfdx-essentials.svg)](https://gitHub.com/nvuillam/sfdx-essentials/graphs/contributors/)\n[![GitHub stars](https://img.shields.io/github/stars/nvuillam/sfdx-essentials?label=Star\u0026maxAge=2592000)](https://GitHub.com/nvuillam/sfdx-essentials/stargazers/)\n[![License](https://img.shields.io/npm/l/sfdx-essentials.svg)](https://github.com/nvuillam/sfdx-essentials/blob/master/package.json)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\n# SFDX ESSENTIALS PLUGIN\n\nToolbox for Salesforce DX to provide some very helpful additional features to base sfdx commands.\n\n**SFDX Essentials** commands are focused on DevOps, but not only (cleaning, sources consistency check ...)\n\nEasy to integrate in a CD/CI process (Jenkins Pipeline,CircleCI...)\n\nSee [CHANGELOG](https://github.com/nvuillam/sfdx-essentials/blob/master/CHANGELOG.md)\n\nAny **question**, **problem** or **enhancement request** ? Ask [**here**](https://github.com/nvuillam/sfdx-essentials/issues) :)\n\n## Commands\n\n### Metadata\n\n| Command                                                                                      | Description                                                                                                  |\n|----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| [essentials:metadata:filter-from-packagexml](#sfdx-essentialsmetadatafilter-from-packagexml) | **Filter metadatas generated from a SFDX Project** in order to be able to deploy only part of them on an org |\n| [essentials:metadata:filter-xml-content](#sfdx-essentialsmetadatafilter-xml-content)         | **Filter content of metadatas (XML)** in order to be able to deploy only part of them on an org              |\n| [sfdx essentials:metadata:uncomment](#sfdx-essentialsmetadatauncomment)                      | **Uncomment lines in sfdx/md files** (useful to manage @Deprecated annotations with managed packages)        |\n\n### Migration\n\n| Command                                                                                  | Description                                                                                                                                                                                                                 |\n|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [essentials:mig:fix-aura-attributes-names](#sfdx-essentialsmigfix-aura-attributes-names) | **Replace reserved lightning attribute names in lightning components and apex classes** ( if you named a lightning attribute like a custom apex class, since Summer 18 you simply can not generate a managed package again) |\n| [essentials:mig:migrate-object-model](#sfdx-essentialsmigmigrate-object-model)           | **Migrate sources from an object model to a new object model**                                                                                                                                                              |\n| [essentials:mig:add-namespace](#sfdx-essentialsmigadd-namespace)                         | **Update SFDX sources to add a namespace on references to items described in a package.xml file**                                                                                                                           |\n\n### Package.xml\n\n| Command                                                          | Description                                                   |\n|------------------------------------------------------------------|---------------------------------------------------------------|\n| [essentials:packagexml:append](#sfdx-essentialspackagexmlappend) | **Append content of a package.xml files into a single one**   |\n| [essentials:packagexml:sort](#sfdx-essentialspackagexmlsort)     | **Reorder alphabetically the content of package.xml file(s)** |\n\n### Permission sets\n\n| Command                                                                    | Description                                                                            |\n|----------------------------------------------------------------------------|----------------------------------------------------------------------------------------|\n| [essentials:permissionset:generate](#sfdx-essentialspermissionsetgenerate) | **Generate permission sets** from packageXml file depending on JSON configuration file |\n\n### SFDX Project\n\n| Command                                                                                                          | Description                                                                                                                                                               |\n|------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [essentials:project:change-dependency-version](#sfdx-essentialsprojectchange-dependency-version)                 | **Replace other managed packages dependency version number** ( very useful when you build a managed package over another managed package, like Financial Services Cloud ) |\n| [essentials:project:check-consistency-with-packagexml](#sfdx-essentialsprojectcheck-consistency-with-packagexml) | **Check consistency between a SFDX project files and package.xml files**                                                                                                  |\n| [essentials:project:count-apex-lines](#sfdx-essentialsprojectcount-apex-lines)                                   | **Count apex source lines of filtered files**                                                                                                                             |\n\n## INSTALLATION\n\n```shell\n    sfdx plugins:install sfdx-essentials\n```\n\n- Windows users: [sfdx plugin generator](https://github.com/forcedotcom/sfdx-plugin-generate) is bugged on windows (hardcode call of linux rm instruction) , so you may use [Git Bash](https://gitforwindows.org/) to run this code ( at least while it installs the plugin dependencies )\n\n- CI Users: As the plugin is not signed, to install it from a Dockerfile or a script:\n\n```shell\n    echo 'y' | sfdx plugins:install sfdx-essentials\n```\n\n## UPGRADE\n\nIts seems that `sfdx plugins:update` does not always work, in that case , uninstall then reinstall the plugin\n\n```shell\n    sfdx plugins:uninstall sfdx-essentials\n    sfdx plugins:install sfdx-essentials\n```\n\n## CONTRIBUTE\n\nContributions are very welcome, please run **npm run lint:fix** and **npm run test** before making a new PR\n\n- Fork the repo and clone it on your computer\n- To [debug](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_plugins.meta/sfdx_cli_plugins/cli_plugins_debug.htm), run  ``` $ sfdx plugins:link ``` or use  ``` $ NODE_OPTIONS=--inspect-brk bin/run yourcommand ```\n- Now your calls to sfdx essentials are performed on your local sources\n- Once your code is ready, documented and linted, please make a pull request :)\n\n# Command details\n\u003c!-- cSpell:disable --\u003e\n\u003c!-- commands --\u003e\n* [`sfdx essentials:metadata:filter-from-packagexml`](#sfdx-essentialsmetadatafilter-from-packagexml)\n* [`sfdx essentials:metadata:filter-xml-content`](#sfdx-essentialsmetadatafilter-xml-content)\n* [`sfdx essentials:metadata:uncomment`](#sfdx-essentialsmetadatauncomment)\n* [`sfdx essentials:mig:add-namespace`](#sfdx-essentialsmigadd-namespace)\n* [`sfdx essentials:mig:fix-aura-attributes-names`](#sfdx-essentialsmigfix-aura-attributes-names)\n* [`sfdx essentials:mig:migrate-object-model`](#sfdx-essentialsmigmigrate-object-model)\n* [`sfdx essentials:packagexml:append`](#sfdx-essentialspackagexmlappend)\n* [`sfdx essentials:packagexml:sort`](#sfdx-essentialspackagexmlsort)\n* [`sfdx essentials:permissionset:generate`](#sfdx-essentialspermissionsetgenerate)\n* [`sfdx essentials:project:change-dependency-version`](#sfdx-essentialsprojectchange-dependency-version)\n* [`sfdx essentials:project:check-consistency-with-packagexml`](#sfdx-essentialsprojectcheck-consistency-with-packagexml)\n* [`sfdx essentials:project:count-apex-lines`](#sfdx-essentialsprojectcount-apex-lines)\n\n## `sfdx essentials:metadata:filter-from-packagexml`\n\nFilter metadatas generated from a SFDX Project in order to be able to deploy only part of them on an org\n\n```\nUSAGE\n  $ sfdx essentials:metadata:filter-from-packagexml\n\nOPTIONS\n  -i, --inputfolder=inputfolder    Input folder (default: \".\" )\n  -o, --outputfolder=outputfolder  Output folder (default: filteredMetadatas)\n  -p, --packagexml=packagexml      package.xml file path\n  -s, --silent                     Silent logs when no error\n  -v, --verbose                    Verbose\n  --noinsight                      Do not send anonymous usage stats\n\nDESCRIPTION\n  This can help if you need to deploy only part of the result of sfdx force:source:convert into a org, by filtering the \n  result (usually in mdapi_output_dir) to keep only the items referenced in your own package.xml file\n\n  WARNING: This version does not support all the metadata types yet, please contribute if you are in a hurry :)\n\n  Package.xml types currently managed:\n\n  - ApexClass\n  - ApexComponent\n  - ApexPage\n  - ApexTrigger\n  - ApprovalProcess\n  - AuraDefinitionBundle\n  - AuthProvider\n  - BusinessProcess\n  - ContentAsset\n  - CustomApplication\n  - CustomField\n  - CustomLabel\n  - CustomMetadata\n  - CustomObject\n  - CustomObjectTranslation\n  - CustomPermission\n  - CustomPlatformEvent\n  - CustomSettings\n  - CustomSite\n  - CustomTab\n  - Document\n  - EmailTemplate\n  - EscalationRules\n  - FlexiPage\n  - Flow\n  - FieldSet\n  - GlobalValueSet\n  - GlobalValueSetTranslation\n  - HomePageLayout\n  - ListView\n  - LightningComponentBundle\n  - Layout\n  - NamedCredential\n  - Network\n  - NetworkBranding\n  - PermissionSet\n  - Profile\n  - Queue\n  - QuickAction\n  - RecordType\n  - RemoteSiteSetting\n  - Report\n  - SiteDotCom\n  - StandardValueSet\n  - StandardValueSetTranslation\n  - StaticResource\n  - Translations\n  - ValidationRule\n  - WebLink\n  - Workflow\n\nALIASES\n  $ sfdx essentials:filter-metadatas\n\nEXAMPLES\n  $ sfdx essentials:metadata:filter-from-packagexml -p myPackage.xml\n  $ sfdx essentials:metadata:filter-from-packagexml -i md_api_output_dir -p myPackage.xml -o md_api_filtered_output_dir\n  $ sfdx force:source:convert -d tmp/deployDemoQuali/\n  sfdx essentials:metadata:filter-from-packagexml -i tmp/deployDemoQuali/ -p myPackage.xml -o \n  tmp/deployDemoQualiFiltered/\n  sfdx force:mdapi:deploy -d tmp/deployDemoQualiFiltered/ -w 60 -u DemoQuali\n```\n\n_See code: [src/commands/essentials/metadata/filter-from-packagexml.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/metadata/filter-from-packagexml.ts)_\n\n## `sfdx essentials:metadata:filter-xml-content`\n\nFilter content of metadatas (XML) in order to be able to deploy only part of them on an org (See [Example configuration](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/filter-xml-content-config.json))\n\n```\nUSAGE\n  $ sfdx essentials:metadata:filter-xml-content\n\nOPTIONS\n  -c, --configFile=configFile      Config JSON file path\n  -i, --inputfolder=inputfolder    Input folder (default: \".\" )\n  -o, --outputfolder=outputfolder  Output folder (default: parentFolder + _xml_content_filtered)\n  --noinsight                      Do not send anonymous usage stats\n\nDESCRIPTION\n  When you perform deployments from one org to another, the features activated in the target org may not fit the content \n  of the sfdx/metadata files extracted from the source org.\n\n  You may need to filter some elements in the XML files, for example in the Profiles\n\n  This script requires a filter-config.json file\n\nALIASES\n  $ sfdx essentials:filter-xml-content\n\nEXAMPLES\n  sfdx essentials:filter-xml-content -i \"./mdapi_output\"\n  sfdx essentials:filter-xml-content -i \"retrieveUnpackaged\"\n```\n\n_See code: [src/commands/essentials/metadata/filter-xml-content.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/metadata/filter-xml-content.ts)_\n\n## `sfdx essentials:metadata:uncomment`\n\nUncomment lines in sfdx/md files (useful to manage @Deprecated annotations with managed packages)\n\n```\nUSAGE\n  $ sfdx essentials:metadata:uncomment\n\nOPTIONS\n  -f, --folder=folder              SFDX project folder containing files\n  -k, --uncommentKey=uncommentKey  Uncomment key (default: SFDX_ESSENTIALS_UNCOMMENT)\n  -v, --verbose                    Verbose\n  --noinsight                      Do not send anonymous usage stats\n\nDESCRIPTION\n  Uncomment desired lines just before making a deployment\n\n  Once you flagged a packaged method as **@Deprecated** , you can not deploy it in an org not used for generating a \n  managed package\n\n  Before :\n  // @Deprecated SFDX_ESSENTIALS_UNCOMMENT\n  global static List\u003cOrgDebugOption__c\u003e setDebugOption() {\n     return null;\n  }\n\n  After :\n  @Deprecated // Uncommented by sfdx essentials:uncomment (https://github.com/nvuillam/sfdx-essentials)\n  global static List\u003cOrgDebugOption__c\u003e setDebugOption() {\n     return null;\n  }\n\nALIASES\n  $ sfdx essentials:uncomment\n\nEXAMPLE\n  $ sfdx essentials:metadata:uncomment --folder \"./Projects/DevRootSource/tmp/deployPackagingDxcDevFiltered\" \n  --uncommentKey \"SFDX_ESSENTIALS_UNCOMMENT_DxcDev_\"\n```\n\n_See code: [src/commands/essentials/metadata/uncomment.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/metadata/uncomment.ts)_\n\n## `sfdx essentials:mig:add-namespace`\n\nMigrate sources from an object model to a new object model (See [Example configuration](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/migrate-object-model-config.json))\n\n```\nUSAGE\n  $ sfdx essentials:mig:add-namespace\n\nOPTIONS\n  -e, --excludeExpressionList=excludeExpressionList  List of expressions to ignore. ex: **/node_modules/**\n\n  -f, --fetchExpressionList=fetchExpressionList      Fetch expression list. Let default if you dont know. ex:\n                                                     ./aura/**/*.js,./aura/**/*.cmp,./classes/*.cls,./objects/*/fields/*\n                                                     .xml,./objects/*/recordTypes/*.xml,./triggers/*.trigger,./permissio\n                                                     nsets/*.xml,./profiles/*.xml,./staticresources/*.json\n\n  -i, --inputFolder=inputFolder                      Input folder (default: \".\" )\n\n  -l, --labelsfile=labelsfile                        Path to CustomLabel.labels-meta.xml\n\n  -n, --namespace=namespace                          (required) Namespace string\n\n  -p, --packagexml=packagexml                        (required) Path to package.xml file\n\n  -v, --verbose                                      Verbose\n\n  --noinsight                                        Do not send anonymous usage stats\n\nDESCRIPTION\n  Use this command if you need to replace a SObject by another one in all your sfdx sources\n\nALIASES\n  $ sfdx essentials:migrate-object-model\n\nEXAMPLES\n  $ essentials:mig:add-namespace -n DxcOemDev -p \"../../somefolder/package.xml\"\n  $ essentials:mig:add-namespace -n DxcOemDev -i \"C:/Work/git/some-client-project/Projects/DevRootSource\" \n  --fetchExpressionList=\"**/*.apex,**/*.json\" -p \n  \"C:/Work/git/DXCO4SF_Sources_OEM_ST/Config/packageXml/package_DevRoot_Managed.xml\"\n  $ essentials:mig:add-namespace -n DxcOemDev -e \"**/www*\" -p \"../../somefolder/package.xml\"\n```\n\n_See code: [src/commands/essentials/mig/add-namespace.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/mig/add-namespace.ts)_\n\n## `sfdx essentials:mig:fix-aura-attributes-names`\n\nReplace reserved lightning attribute names in lightning components and apex classes\n\n```\nUSAGE\n  $ sfdx essentials:mig:fix-aura-attributes-names\n\nOPTIONS\n  -f, --folder=folder  SFDX project folder containing files\n  --noinsight          Do not send anonymous usage stats\n\nDESCRIPTION\n  If you named a lightning attribute like a custom apex class, since Summer 18 you simply can not generate a managed \n  package again.\n\n  This command lists all custom apex classes and custom objects names , then replaces all their references in lightning \n  components and also in apex classes with their camelCase version.\n\n  Ex : MyClass_x attribute would be renamed myClassX\n\nALIASES\n  $ sfdx essentials:fix-lightning-attribute-names\n\nEXAMPLE\n  sfdx essentials:mig:fix-aura-attributes-names\n```\n\n_See code: [src/commands/essentials/mig/fix-aura-attributes-names.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/mig/fix-aura-attributes-names.ts)_\n\n## `sfdx essentials:mig:migrate-object-model`\n\nMigrate sources from an object model to a new object model (See [Example configuration](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/migrate-object-model-config.json))\n\n```\nUSAGE\n  $ sfdx essentials:mig:migrate-object-model\n\nOPTIONS\n  -c, --configFile=configFile                    JSON config file\n  -d, --[no-]deleteFiles                         Delete files with deprecated references\n\n  -f, --fetchExpressionList=fetchExpressionList  Fetch expression list. Let default if you dont know. ex:\n                                                 /aura/**/*.js,./aura/**/*.cmp,./classes/*.cls,./objects/*/fields/*.xml,\n                                                 ./objects/*/recordTypes/*.xml,./triggers/*.trigger,./permissionsets/*.x\n                                                 ml,./profiles/*.xml,./staticresources/*.json\n\n  -i, --inputFolder=inputFolder                  Input folder (default: \".\" )\n\n  -k, --[no-]deleteFilesExpr                     Delete files matching expression\n\n  -r, --[no-]replaceExpressions                  Replace expressions using fetchExpressionList\n\n  -s, --[no-]copySfdxProjectFolder               Copy sfdx project files after process\n\n  -v, --verbose                                  Verbose\n\n  --noinsight                                    Do not send anonymous usage stats\n\nDESCRIPTION\n  Use this command if you need to replace a SObject by another one in all your sfdx sources\n\nALIASES\n  $ sfdx essentials:migrate-object-model\n\nEXAMPLES\n  $ sfdx essentials:mig:migrate-object-model -c \"./config/migrate-object-model-config.json\"\n  $ sfdx essentials:mig:migrate-object-model -c migration/config-to-oem.json -i Config/packageXml --fetchExpressionList \n  \"./package*.xml\" --no-deleteFiles --no-deleteFilesExpr --no-copySfdxProjectFolder\n```\n\n_See code: [src/commands/essentials/mig/migrate-object-model.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/mig/migrate-object-model.ts)_\n\n## `sfdx essentials:packagexml:append`\n\nAppend content of a package.xml files into a single one\n\n```\nUSAGE\n  $ sfdx essentials:packagexml:append\n\nOPTIONS\n  -o, --outputfile=outputfile    package.xml output file\n  -p, --packagexmls=packagexmls  package.xml files path (separated by commas)\n  -v, --verbose                  Verbose\n  --noinsight                    Do not send anonymous usage stats\n\nDESCRIPTION\n  API version number of the result file will be the same than in the first package.xml file sent as argument\n\nEXAMPLE\n  sfdx essentials:packagexml:append -p \n  \"./Config/packageXml/package_DevRoot_Managed.xml,./Config/packageXml/package_DevRoot_Demo.xml,./Config/packageXml/pack\n  age_DevRoot_Scratch.xml\" -o \"./Config/packageXml/package_for_new_scratch_org.xml\"\n```\n\n_See code: [src/commands/essentials/packagexml/append.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/packagexml/append.ts)_\n\n## `sfdx essentials:packagexml:sort`\n\nDevelopers have the bad habit to input package.xml files in a non-alphabetical order. Use this command to reorder alphabetically your package.xml files !\n\n```\nUSAGE\n  $ sfdx essentials:packagexml:sort\n\nOPTIONS\n  -p, --packagexml=packagexml  package.xml file path (or a folder containing package.xml files)\n  --noinsight                  Do not send anonymous usage stats\n\nALIASES\n  $ sfdx essentials:order-package-xml\n  $ sfdx essentials:packagexml:reorder\n\nEXAMPLES\n  $ sfdx essentials:packagexml:sort -p \"./Config/packageXml/package.xml\"\n  $ sfdx essentials:packagexml:sort -p \"./Config/packageXml\"\n```\n\n_See code: [src/commands/essentials/packagexml/sort.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/packagexml/sort.ts)_\n\n## `sfdx essentials:permissionset:generate`\n\nGenerate permission sets in XML format used for SFDX project from package.xml file depending on JSON configuration file (See [Example configuration](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/generate-permission-sets-config.json) and [Example log](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/generate-permission-sets.log)) ![Generate permission sets log image](https://github.com/nvuillam/sfdx-essentials/raw/master/examples/generate-permission-sets-log.png \"Generate permission sets log image\")\n\n```\nUSAGE\n  $ sfdx essentials:permissionset:generate\n\nOPTIONS\n  -c, --configfile=configfile                config.json file\n  -f, --sfdxSourcesFolder=sfdxSourcesFolder  SFDX Sources folder (used to filter required and masterDetail fields)\n  -o, --outputfolder=outputfolder            [default: .] Output folder (default: \".\" )\n  -p, --packagexml=packagexml                package.xml file path\n  -s, --nameSuffix=nameSuffix                Name suffix for generated permission sets\n  -v, --verbose                              Verbose\n  --noinsight                                Do not send anonymous usage stats\n\nALIASES\n  $ sfdx essentials:generate-permission-sets\n\nEXAMPLES\n  $ sfdx essentials:permissionset:generate -c \"./Config/generate-permission-sets.json\" -p \n  \"./Config/packageXml/package_DevRoot_Managed.xml\" -f \"./Projects/DevRootSource/force-app/main/default\" -o \n  \"./Projects/DevRootSource/force-app/main/default/permissionsets\"\n  $ sfdx essentials:permissionset:generate -c \"./Config/generate-permission-sets.json\" -p \n  \"./Config/packageXml/package_DevRoot_xDemo.xml\" -f \"./Projects/DevRootSource/force-app/main/default\" --nameSuffix \n  Custom -o \"./Projects/DevRootSource/force-app/main/default/permissionsets\"\n```\n\n_See code: [src\\commands\\essentials\\permissionset\\generate.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src\\commands\\essentials\\permissionset\\generate.ts)_\n\n## `sfdx essentials:project:change-dependency-version`\n\nAllows to change an external package dependency version, or update api version\n\n```\nUSAGE\n  $ sfdx essentials:project:change-dependency-version\n\nOPTIONS\n  -a, --apiversion=apiversion      If sent, updates api version\n  -f, --folder=folder              SFDX project folder containing files\n  -j, --majorversion=majorversion  Major version\n  -m, --minorversion=minorversion  Minor version\n  -n, --namespace=namespace        Namespace of the managed package\n  -r, --remove                     Verbose\n  -v, --verbose                    Verbose\n  --noinsight                      Do not send anonymous usage stats\n\nDESCRIPTION\n  Can also :\n\n     - remove package dependencies if --namespace and --remove arguments are sent\n     - update API version\n\nALIASES\n  $ sfdx essentials:change-dependency-version\n  $ sfdx essentials:change-api-version\n  $ sfdx essentials:project:change-api-version\n\nEXAMPLES\n  $ sfdx essentials:project:change-dependency-version -n FinServ -j 214 -m 7\n  $ sfdx essentials:project:change-dependency-version -n FinServ -r\n  $ sfdx essentials:project:change-dependency-version -a 47.0\n```\n\n_See code: [src/commands/essentials/project/change-dependency-version.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/project/change-dependency-version.ts)_\n\n## `sfdx essentials:project:check-consistency-with-packagexml`\n\nAllows to compare the content of a SFDX and the content of one or several (concatenated) package.xml files ( See [Example log](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/check-sfdx-project-consistency.log)) ![Check SFDX project consistency log image](https://github.com/nvuillam/sfdx-essentials/raw/master/examples/check-sfdx-project-consistency-log.png \"Check SFDX project consistency log image\")\n\n```\nUSAGE\n  $ sfdx essentials:project:check-consistency-with-packagexml\n\nOPTIONS\n  -c, --chatty                                     Chatty logs\n\n  -d, --ignoreDuplicateTypes=ignoreDuplicateTypes  List of types to ignore while checking for duplicates in package.xml\n                                                   files\n\n  -f, --failIfError                                Script failing if errors are founds\n\n  -i, --inputfolder=inputfolder                    SFDX Project folder (default: \".\" )\n\n  -j, --jsonLogging                                JSON logs\n\n  -p, --packageXmlList=packageXmlList              List of package.xml files path\n\n  --noinsight                                      Do not send anonymous usage stats\n\nDESCRIPTION\n  This will output a table with the number of elements :\n\n     - Existing in both SFDX Project files and package.xml file(s)\n     - Existing only in SFDX Project files\n     - Existing only in package.xml file(s)\n\nALIASES\n  $ sfdx essentials:check-sfdx-project-consistency\n\nEXAMPLE\n  $  sfdx essentials:project:check-consistency-with-packagexml -p \n  \"./Config/packageXml/package_DevRoot_Managed.xml,./Config/packageXml/package_DevRoot_xDemo.xml\" -i \n  \"./Projects/DevRootSource/force-app/main/default\" -d \"Document,EmailTemplate\" --failIfError\n```\n\n_See code: [src/commands/essentials/project/check-consistency-with-packagexml.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/project/check-consistency-with-packagexml.ts)_\n\n## `sfdx essentials:project:count-apex-lines`\n\nAllows to count lines of apex executable code related to filtered items\n\n```\nUSAGE\n  $ sfdx essentials:project:count-apex-lines\n\nOPTIONS\n  -b, --browsingpattern=browsingpattern  Files browsing pattern. Default **/*.cls\n  -e, --excludepattern=excludepattern    Regex to exclude patterns\n  -f, --folder=folder                    SFDX project folder containing files\n  -p, --packagexmls=packagexmls          package.xml files path (separated by commas)\n  -s, --sort=sort                        [default: alpha] Sort order: alpha (default), lines, chars\n  -v, --verbose                          Verbose\n  -w, --weight                           Return also weight (number of chars). Slower and requires Perl\n  --noinsight                            Do not send anonymous usage stats\n\nALIASES\n  $ sfdx essentials:count-apex-lines\n\nEXAMPLES\n  $ sfdx essentials:project:count-apex-lines -f \"./force-app/main/default\"\n  $ sfdx essentials:project:count-apex-lines -f \"./force-app/main/default\" -b \"**/WsMockV*.cls\"\n  $ sfdx essentials:project:count-apex-lines -f \"./force-app/main/default\" -p \"./packagexml/package1.xml\"\n  $ sfdx essentials:project:count-apex-lines -f \"./force-app/main/default\" -p \"./packagexml/package1.xml\" -e \n  \"(WsBlabla|POC_)\"\n```\n\n_See code: [src/commands/essentials/project/count-apex-lines.ts](https://github.com/nvuillam/sfdx-essentials/blob/v2.5.3/src/commands/essentials/project/count-apex-lines.ts)_\n\u003c!-- commandsstop --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvuillam%2Fsfdx-essentials","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnvuillam%2Fsfdx-essentials","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvuillam%2Fsfdx-essentials/lists"}