Merged
Conversation
Replace lodash with lean custom utility functions, reducing bundle size by 39.8% (71,929 bytes). Implemented eight purpose-specific utilities in src/_/ directory to handle null checks, type validation, object manipulation, and collection operations. Bundle Size Improvement: - Before: 180,599 bytes (176 KiB) - After: 108,670 bytes (106 KiB) - Reduction: 71,929 bytes (39.8%) Custom Utilities Implemented: - isNil(value) - Null/undefined check - isEmpty(value) - Empty value check - has(object, key) - Own property check - hasIn(object, key) - Inherited property check - isString(value) - String type check - isObject(value) - Object type check - head(array) - Array first element - omit(object, keys) - Object key exclusion Implementation Details: - Updated 93 lodash imports across src/ directory - Replaced lodash calls with _.functionName() pattern - Moved lodash from dependencies to devDependencies - Maintained for test files only - All 477 tests pass with 100% coverage - No functionality regressions - TypeScript definitions remain valid
|
🎉 This PR is included in version 4.1.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
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.
Overview
This PR removes lodash as a runtime dependency by implementing lean, purpose-specific utility functions, resulting in a 39.8% bundle size reduction.
Bundle Size Improvement 📦
Changes
Custom Utilities Implemented
Created eight lean utility functions in
src/_/directory:isNil(value)- Null/undefined checkisEmpty(value)- Empty value checkhas(object, key)- Own property checkhasIn(object, key)- Inherited property checkisString(value)- String type checkisObject(value)- Object type checkhead(array)- Array first elementomit(object, keys)- Object key exclusionMigration Details
dependenciestodevDependenciesVerification ✅
Impact
This change significantly reduces the bundle size for all elastic-builder users while maintaining full backward compatibility and test coverage.