Optimize sync performance by skipping npm install when package.json is unchanged#435
Open
jessejackson85 wants to merge 1 commit intostakwork:mainfrom
Open
Optimize sync performance by skipping npm install when package.json is unchanged#435jessejackson85 wants to merge 1 commit intostakwork:mainfrom
jessejackson85 wants to merge 1 commit intostakwork:mainfrom
Conversation
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.
Problem
Currently, the
/syncendpoint runsnpm install --forceevery time it processes a JavaScript/TypeScript repository, even when there are no changes topackage.json. This causes unnecessary processing time and resource usage, especially for frequently synced repositories.Solution
This PR optimizes the sync process by:
package.jsoncontent before and after cloning the repositorynpm installcommand whenpackage.jsonhasn't changedImplementation Details
clone_repo()to detectpackage.jsonchangesrun_cmd()to skip npm install commands when appropriateget_use_lsp_for_sync()utility function to properly set all environment variablesprocess(),sync_async()and related functions to use the new optimizationTesting
Tested with multiple scenarios:
Closed: #390
Expected Benefits
Screenshots/Logs
Before optimization:
After optimization (repeated sync):