Follow these steps to run a dev version of this project that supports hot reload and is debuggable through VS Code. You will need to install Firefox if you don't have it already because the VS Code Debugger for Chrome extension doesn't support iframes yet.
Hot reload
Deploy the extension to the marketplace:
npm run publish:dev -- --token [token]
The [token] here is an Azure DevOps PAT (personal access token) with the Marketplace (Publish) scope and access set to All accessible organizations. For more information, see Authenticate access with personal access tokens.
Share the published extension with your Azure DevOps organization and install it.
Start the webpack-dev-server with:
npm run start:dev
Go to localhost:3000 in your browser. You should get an untrusted certificate error page. Select Advanced and then select Accept the Risk and Continue.
Navigate to the extension in Azure DevOps. Any changes to the source code will cause webpack to recompile and reload the extension automatically.
Although most code changes will be reflected immediately, you may still need to occasionally update your extension in the marketplace. The dev extension loads all its resources from the webpack-dev-server, but the manifest itself is being loaded from the published code. Therefore, any changes to the manifest file will not be properly reflected in Azure DevOps until the extension has been republished.
Debug in VS Code
In VS Code, press F5 to start debugging (making sure the webpack-dev-server is still running). The default launch configuration should be set to Launch Firefox.
Chrome configurations are included in the sample as well in case the Debugger for Chrome extension eventually supports iframes. However, debugging iframes is only supported in the Debugger for Firefox extension at this time.
Allow the localhost:3000 certificate again and log into your Azure DevOps account.
If you leave the Firefox window open that VS Code launches, the debugger will reattach instead of starting a clean Firefox instance each time.
Navigate to your extension and set a breakpoint in a method in VS Code. You should see that breakpoint hit when that method executes.