Run npm install asynchronously during apps init#4600
Open
jamesbroadhead wants to merge 1 commit intodatabricks:mainfrom
Open
Run npm install asynchronously during apps init#4600jamesbroadhead wants to merge 1 commit intodatabricks:mainfrom
jamesbroadhead wants to merge 1 commit intodatabricks:mainfrom
Conversation
Start npm install in the background immediately after cloning the template, so it runs in parallel with the interactive prompts. This reduces total init time by overlapping the (often slow) npm install with the time the user spends answering questions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
An authorized user can trigger integration tests manually by following the instructions below: Trigger: Inputs:
Checks will be approved automatically on success. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Start
npm installin the background immediately after cloning the template, so it runs in parallel with the interactive prompts rather than blocking after all questions are answered.StartNpmInstallAsync()to kick offnpm ciin a goroutine, returning a channel for the resultrunCreate(), start async npm install in the cloned template directory right after template resolutionnode_modulesto the project directoryInitialize()skips npm install ifnode_modulesalready exists (from the async pre-install)Initialize()retry synchronouslyWhy
npm installis often the slowest step ofdatabricks apps init. It currently runs sequentially after all interactive prompts and template copying. Since npm only needspackage.json/package-lock.json(which exist in the cloned template), it can run in parallel with the user answering questions, reducing perceived wait time significantly.Tests
TestStartNpmInstallAsyncReturnsChannel— verifies async function returns a usable channelTestInitializeSkipsNpmInstallWhenNodeModulesExists— verifies Initialize skips npm when node_modules pre-existsTestFindTemplateProjectDir(4 subtests) — verifies template project directory detection