-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve engineering overhead of extensions #115023
Comments
Are we currently using TypeScript project references? Is this something that could help with the dev box build times? |
For the CI runs, it would also be great if we could only run the tests, that test the code that has been modified in the commit. |
The interface between extensions and core isn't at the TypeScript level: it's at the VSIX level. Project references help with creating definition interfaces between projects, but we already craft ours manually:
This is a whole different story, much harder to accomplish. But generally a good idea yes. |
After 2 full days of investment, I decided to put a pin on this. Work is in The main problems with this are:
|
Talked to @joaomoreno about this and I think we're gonna put a pin in this. The engineering overhead isn't worth the effort at this time. |
Considering we want to keep the core extensions within the VS Code repo for the time being, let's look into improving the engineering overhead of that situation. We want to avoid recompiling extensions unnecessarily, something which happens often in the CI as well as in each dev box.
Here's what I'm thinking:
package
(which creates a VSIX),watch
(which compiles the sources in watch mode).git log -1 -- extension/NAME
, or similar). We can use that commit ID as a cache key to save the extension's built VSIX in a storage account.yarn && yarn package
and the resulting VSIX should be cached in the storage account. If fresh, the same Marketplace VSIX mechanism should be used to fetch the VSIX from a remote location, but this time from the storage account.yarn watch
experience to fetch the VSIXs from the same storage account, which should have public read access. Given that a dev has no changes which affect an extension, the VSIX should just be used. As soon as changes appear locally,yarn watch
should do the right thing automatically (yarn && yarn watch
on the extension folder, and signal code-oss to use it instead).This way we can reduce build times, dev times and keep having extensions in the microsoft/vscode repo.
The text was updated successfully, but these errors were encountered: