Bamboo is a simple, friendly, and ⚡blazingly⚡ fast customization manager, designed to speed up development time on the Microsoft Power Platform. 🚀
Currently supporting web resources, custom controls, and plugin packages, Bamboo provides a seamless experience for developers to edit and manage these solution components - all from within VS Code.
Bamboo provides the following features inside VS Code:
- Create or update web resources.
- Publish web resources automatically.
- Add web resources to a solution automatically.
- Manage custom controls (PCF components) through the import + publish of solutions.
- List all web resources and custom controls in a given solution in a VS Code tree view.
- Update plugin packages
- Install the extension here.
- Add the files:
bamboo.conf.jsonand.bamboo_tokens/tokenCache.jsonat the root of your VS Code workspace. - Populate
bamboo.conf.jsonwith the following data:
{
"baseUrl": "https://<org>.crm.dynamics.com",
"solutionUniqueName": "<your-solution-name>",
"credential": {
"type": "ClientSecret",
"clientId": "<your-client-id>",
"clientSecret": "<your-client-secret>",
"tenantId": "<your-tenant-id>"
},
"webResources": [
{
"dataverseName": "new_/forms/account.js",
"relativePathOnDisk": "path/to/new_/forms/account.js"
},
{
"dataverseName": "new_/forms/contact.js",
"relativePathOnDisk": "path/to/new_/forms/contact.js"
},
...
],
"customControls": [
{
"dataverseName": "new_NEW.ControlOne",
"relativePathOnDiskToSolution": "path/to/ControlOneSolution.zip",
"solutionName": "ControlOneSolution"
},
{
"dataverseName": "new_NEW.ControlTwo",
"relativePathOnDiskToSolution": "path/to/ControlTwoSolution.zip",
"solutionName": "ControlTwoSolution"
},
...
],
"pluginPackages": [
{
"pluginPackageName": "new_NEW.Plugins",
"relativePathOnDiskToNugetPackage": "path/to/NEW.Plugins.1.0.0.nupkg"
},
...
]
}- Reload VS Code
- Everytime a configuration change is made to
bamboo.conf.jsonVS Code needs to be re reloaded
- Everytime a configuration change is made to
| Authentication Scheme | Currently Supported |
|---|---|
| Client Id / Client Secret | ✅ |
| OAuth | ❌ |
- All paths must use the
/seperator. baseUrlmust not end with a/.- The app registration specified must have:
- Access to the specified Dataverse environment
- The appropriate Security Role necessary to:
- Upload solutions
- Publish solutions
- Upload web resources
- Publish web resources
- Upload plugin packages
- Add components to solutions
relativePathOnDisk,relativePathOnDiskToSolutionandrelativePathOnDiskToNugetPackagemust not start with a/.- For web resources,
dataverseNameandrelativePathOnDiskdon't need to be similar (as shown in the example), this is just encouraged for ease of development
| Command | Title |
|---|---|
bamboo.syncCurrentFile |
Sync current file. (Must be present on conf.) |
bamboo.syncAllFiles |
Sync all files. (Each file present in the conf.) |
bamboo.syncCustomControl |
Sync a Custom Control. (Opens up a choice dropdown for each control specified in the conf.) |
bamboo.syncPluginPackage |
Sync a Plugin Package. (Opens up a choice dropdown for each package specified in the conf.) |
- All command can be run in the command palette.
| Property | Type | Default | Description |
|---|---|---|---|
bamboo.general.messageVerbosity |
string |
"low" |
Set the verbosity level of how many messages are displayed. |
bamboo.general.listSolutionComponentsOnStartup |
boolean |
false |
When the extension is loaded, list all supported solution components in the currently selected solution in a tree view. |
bamboo.webResource.publishAfterSync |
boolean |
true |
When syncing a web resource, publish after a successful upload. |
bamboo.customControl.publishAfterSync |
boolean |
true |
When syncing a custom control solution, publish after a successful upload. |
- [✅] Upload / create web resources
- [✅] List Web Resources in tree view
- [✅] List Custom Controls in tree view
- [✅] Upload Custom Controls via Solution Import
- [❌] Upload Custom Controls via PAC or individual import
- [❌] Automatically add custom controls to solution
- [❌] Manage upload / sync from context of tree view
- [❌] Sync data from Power Apps to local files
- [❌] Create a Plugin Package or Plugin Assembly
- [✅] Update / sync a Plugin Package
- [❌] Update / sync a Plugin Assembly
Distributed under the MIT License. See LICENSE for more information.
- This project is intended to benefit the Power Platform community as well as Root16's internal developers.
- Contributions are most welcome.
- But, issues, fixes and feature requests are not guaranteed.
- Use at your own risk: This software is provided "as is," without warranty of any kind, express or implied. Use it at your own discretion and responsibility.



