Skip to content
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

Replace lodash dependency with lodash.isEmpty #443

Open
davidjoy opened this issue Jul 2, 2024 · 1 comment
Open

Replace lodash dependency with lodash.isEmpty #443

davidjoy opened this issue Jul 2, 2024 · 1 comment

Comments

@davidjoy
Copy link
Contributor

davidjoy commented Jul 2, 2024

Currently the Studio footer depends on the entire lodash library. This pulls in significantly more code than we need, as we only use the isEmpty function.

We should replace the lodash dependency with the lodash.isEmpty library; this will take a decently sized chunk out of the bundle sizes of our MFEs.

@regisb
Copy link

regisb commented Jul 4, 2024

I ran npx howfat . in this repo and this is what I got. If I'm reading this right, removing lodash is going to remove 1054 files (!!!) and 1.35 MB?

@edx/frontend-component-footer@1.0.0-semantically-released (150 deps, 39.2mb, 8916 files, ©undefined)
├─┬ @fortawesome/fontawesome-svg-core@6.5.2 (1 dep, 1.13mb, 16 files, ©MIT)
│ ╰── @fortawesome/fontawesome-common-types@6.5.2 (771.85kb, 5 files, ©MIT)
├─┬ @fortawesome/free-brands-svg-icons@6.5.2 (1 dep, 2.84mb, 1062 files, ©(CC-BY-4.0 AND MIT))
│ ╰── @fortawesome/fontawesome-common-types@6.5.2 (771.85kb, 5 files, ©MIT)
├─┬ @fortawesome/free-regular-svg-icons@6.5.2 (1 dep, 1.4mb, 526 files, ©(CC-BY-4.0 AND MIT))
│ ╰── @fortawesome/fontawesome-common-types@6.5.2 (771.85kb, 5 files, ©MIT)
├─┬ @fortawesome/free-solid-svg-icons@6.5.2 (1 dep, 5.6mb, 3914 files, ©(CC-BY-4.0 AND MIT))
│ ╰── @fortawesome/fontawesome-common-types@6.5.2 (771.85kb, 5 files, ©MIT)
├─┬ @fortawesome/react-fontawesome@0.2.2 (5 deps, 178.39kb, 44 files, ©MIT)
│ ╰─┬ prop-types@15.8.1 (4 deps, 141.47kb, 38 files, ©MIT)
│   ├─┬ loose-envify@1.4.0 (1 dep, 20.39kb, 13 files, ©MIT)
│   │ ╰── js-tokens@4.0.0 (14.72kb, 5 files, ©MIT)
│   ├── object-assign@4.1.1 (5.36kb, 4 files, ©MIT)
│   ╰── react-is@16.13.1 (23.39kb, 9 files, ©MIT)
├─┬ jest-environment-jsdom@29.7.0 (117 deps, 13.4mb, 1848 files, ©MIT)
│ ├─┬ @jest/environment@29.7.0 (56 deps, 3.68mb, 530 files, ©MIT)
│ │ ├── @jest/fake-timers@29.7.0 (🔗, 55 deps, 3.67mb, 526 files, ©MIT)
│ │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ╰── jest-mock@29.7.0 (🔗, 26 deps, 3.02mb, 309 files, ©MIT)
│ ├─┬ @jest/fake-timers@29.7.0 (55 deps, 3.67mb, 526 files, ©MIT)
│ │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
│ │ ├─┬ @sinonjs/fake-timers@10.3.0 (2 deps, 156.41kb, 63 files, ©BSD-3-Clause)
│ │ │ ╰─┬ @sinonjs/commons@3.0.1 (1 dep, 78.19kb, 59 files, ©BSD-3-Clause)
│ │ │   ╰── type-detect@4.0.8 (41.12kb, 5 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ├─┬ jest-message-util@29.7.0 (42 deps, 3.29mb, 385 files, ©MIT)
│ │ │ ├─┬ @babel/code-frame@7.24.7 (11 deps, 194.28kb, 70 files, ©MIT)
│ │ │ │ ├─┬ @babel/highlight@7.24.7 (10 deps, 170.78kb, 65 files, ©MIT)
│ │ │ │ │ ├── @babel/helper-validator-identifier@7.24.7 (48.15kb, 10 files, ©MIT)
│ │ │ │ │ ├─┬ chalk@2.4.2 (6 deps, 83.07kb, 38 files, ©MIT)
│ │ │ │ │ │ ├─┬ ansi-styles@3.2.1 (2 deps, 44.62kb, 18 files, ©MIT)
│ │ │ │ │ │ │ ╰─┬ color-convert@1.9.3 (1 dep, 35.47kb, 14 files, ©MIT)
│ │ │ │ │ │ │   ╰── color-name@1.1.3 (9.14kb, 7 files, ©MIT)
│ │ │ │ │ │ ├── escape-string-regexp@1.0.5 (2.63kb, 4 files, ©MIT)
│ │ │ │ │ │ ╰─┬ supports-color@5.5.0 (1 dep, 9.53kb, 9 files, ©MIT)
│ │ │ │ │ │   ╰── has-flag@3.0.0 (3.05kb, 4 files, ©MIT)
│ │ │ │ │ ├── js-tokens@4.0.0 (🔗, 14.72kb, 5 files, ©MIT)
│ │ │ │ │ ╰── picocolors@1.0.1 (🔗, 5.03kb, 7 files, ©ISC)
│ │ │ │ ╰── picocolors@1.0.1 (5.03kb, 7 files, ©ISC)
│ │ │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
│ │ │ ├── @types/stack-utils@2.0.3 (6.28kb, 5 files, ©MIT)
│ │ │ ├── chalk@4.1.2 (🔗, 5 deps, 95.08kb, 33 files, ©MIT)
│ │ │ ├── graceful-fs@4.2.11 (🔗, 31.77kb, 7 files, ©ISC)
│ │ │ ├─┬ micromatch@4.0.7 (5 deps, 234.52kb, 36 files, ©MIT)
│ │ │ │ ├─┬ braces@3.0.3 (3 deps, 91.73kb, 22 files, ©MIT)
│ │ │ │ │ ╰─┬ fill-range@7.1.1 (2 deps, 48.14kb, 12 files, ©MIT)
│ │ │ │ │   ╰─┬ to-regex-range@5.0.1 (1 dep, 31.79kb, 8 files, ©MIT)
│ │ │ │ │     ╰── is-number@7.0.0 (9.39kb, 4 files, ©MIT)
│ │ │ │ ╰── picomatch@2.3.1 (🔗, 87.84kb, 10 files, ©MIT)
│ │ │ ├─┬ pretty-format@29.7.0 (4 deps, 533.63kb, 76 files, ©MIT)
│ │ │ │ ├── @jest/schemas@29.6.3 (🔗, 1 dep, 437.62kb, 48 files, ©MIT)
│ │ │ │ ├── ansi-styles@5.2.0 (13.28kb, 5 files, ©MIT)
│ │ │ │ ╰── react-is@18.3.1 (23.45kb, 8 files, ©MIT)
│ │ │ ├── slash@3.0.0 (3.42kb, 5 files, ©MIT)
│ │ │ ╰─┬ stack-utils@2.0.6 (1 dep, 17.44kb, 9 files, ©MIT)
│ │ │   ╰── escape-string-regexp@2.0.0 (3.18kb, 5 files, ©MIT)
│ │ ├── jest-mock@29.7.0 (🔗, 26 deps, 3.02mb, 309 files, ©MIT)
│ │ ╰── jest-util@29.7.0 (🔗, 25 deps, 2.97mb, 304 files, ©MIT)
│ ├─┬ @jest/types@29.6.3 (15 deps, 2.7mb, 220 files, ©MIT)
│ │ ├─┬ @jest/schemas@29.6.3 (1 dep, 437.62kb, 48 files, ©MIT)
│ │ │ ╰── @sinclair/typebox@0.27.8 (431.69kb, 43 files, ©MIT)
│ │ ├── @types/istanbul-lib-coverage@2.0.6 (5.32kb, 5 files, ©MIT)
│ │ ├─┬ @types/istanbul-reports@3.0.4 (2 deps, 19.57kb, 15 files, ©MIT)
│ │ │ ╰─┬ @types/istanbul-lib-report@3.0.3 (1 dep, 13.05kb, 10 files, ©MIT)
│ │ │   ╰── @types/istanbul-lib-coverage@2.0.6 (🔗, 5.32kb, 5 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ├─┬ @types/yargs@17.0.32 (1 dep, 67.19kb, 14 files, ©MIT)
│ │ │ ╰── @types/yargs-parser@21.0.3 (8.45kb, 5 files, ©MIT)
│ │ ╰─┬ chalk@4.1.2 (5 deps, 95.08kb, 33 files, ©MIT)
│ │   ├─┬ ansi-styles@4.3.0 (2 deps, 49.67kb, 16 files, ©MIT)
│ │   │ ╰─┬ color-convert@2.0.1 (1 dep, 33.09kb, 11 files, ©MIT)
│ │   │   ╰── color-name@1.1.4 (6.54kb, 4 files, ©MIT)
│ │   ╰─┬ supports-color@7.2.0 (1 dep, 11.19kb, 10 files, ©MIT)
│ │     ╰── has-flag@4.0.0 (4.32kb, 5 files, ©MIT)
│ ├─┬ @types/jsdom@20.0.1 (5 deps, 3.16mb, 243 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ├── @types/tough-cookie@4.0.5 (13.22kb, 5 files, ©MIT)
│ │ ╰─┬ parse5@7.1.2 (1 dep, 1.06mb, 132 files, ©MIT)
│ │   ╰── entities@4.5.0 (403.21kb, 68 files, ©BSD-2-Clause)
│ ├─┬ @types/node@20.14.9 (1 dep, 2.06mb, 100 files, ©MIT)
│ │ ╰── undici-types@5.26.5 (71.34kb, 35 files, ©MIT)
│ ├─┬ jest-mock@29.7.0 (26 deps, 3.02mb, 309 files, ©MIT)
│ │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ╰── jest-util@29.7.0 (🔗, 25 deps, 2.97mb, 304 files, ©MIT)
│ ├─┬ jest-util@29.7.0 (25 deps, 2.97mb, 304 files, ©MIT)
│ │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
│ │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
│ │ ├─┬ chalk@4.1.2 (5 deps, 95.08kb, 33 files, ©MIT)
│ │ │ ├─┬ ansi-styles@4.3.0 (2 deps, 49.67kb, 16 files, ©MIT)
│ │ │ │ ╰─┬ color-convert@2.0.1 (1 dep, 33.09kb, 11 files, ©MIT)
│ │ │ │   ╰── color-name@1.1.4 (6.54kb, 4 files, ©MIT)
│ │ │ ╰─┬ supports-color@7.2.0 (1 dep, 11.19kb, 10 files, ©MIT)
│ │ │   ╰── has-flag@4.0.0 (4.32kb, 5 files, ©MIT)
│ │ ├── ci-info@3.9.0 (25.45kb, 7 files, ©MIT)
│ │ ├── graceful-fs@4.2.11 (31.77kb, 7 files, ©ISC)
│ │ ╰── picomatch@2.3.1 (87.84kb, 10 files, ©MIT)
│ ╰─┬ jsdom@20.0.3 (55 deps, 8.61mb, 1171 files, ©MIT)
│   ├── abab@2.0.6 (10.2kb, 7 files, ©BSD-3-Clause, ⛔ Use your platform's native atob() a…)
│   ├── acorn@8.12.1 (525kb, 10 files, ©MIT)
│   ├─┬ acorn-globals@7.0.1 (2 deps, 585.6kb, 22 files, ©MIT)
│   │ ├── acorn@8.12.1 (🔗, 525kb, 10 files, ©MIT)
│   │ ╰─┬ acorn-walk@8.3.3 (1 dep, 576.38kb, 18 files, ©MIT)
│   │   ╰── acorn@8.12.1 (🔗, 525kb, 10 files, ©MIT)
│   ├── cssom@0.5.0 (50.84kb, 26 files, ©MIT)
│   ├─┬ cssstyle@2.3.0 (1 dep, 219.94kb, 119 files, ©MIT)
│   │ ╰── cssom@0.3.8 (47.85kb, 24 files, ©MIT)
│   ├─┬ data-urls@3.0.2 (6 deps, 393.59kb, 53 files, ©MIT)
│   │ ├── abab@2.0.6 (🔗, 10.2kb, 7 files, ©BSD-3-Clause, ⛔ Use your platform's native atob() a…)
│   │ ├── whatwg-mimetype@3.0.0 (🔗, 16.42kb, 8 files, ©MIT)
│   │ ╰── whatwg-url@11.0.0 (🔗, 3 deps, 359.1kb, 33 files, ©MIT)
│   ├── decimal.js@10.4.3 (276.16kb, 6 files, ©MIT)
│   ├─┬ domexception@4.0.0 (1 dep, 43.38kb, 15 files, ©MIT, ⛔ Use your platform's native DOMExcep…)
│   │ ╰── webidl-conversions@7.0.0 (🔗, 23.67kb, 4 files, ©BSD-2-Clause)
│   ├─┬ escodegen@2.1.0 (4 deps, 1.25mb, 46 files, ©BSD-2-Clause)
│   │ ├── esprima@4.0.1 (306.99kb, 7 files, ©BSD-2-Clause)
│   │ ├── estraverse@5.3.0 (36.22kb, 6 files, ©BSD-2-Clause)
│   │ ├── esutils@2.0.3 (49.4kb, 7 files, ©BSD-2-Clause)
│   │ ╰── source-map@0.6.1 (786.35kb, 20 files, ©BSD-3-Clause)
│   ├─┬ form-data@4.0.0 (5 deps, 306.73kb, 50 files, ©MIT)
│   │ ├── asynckit@0.4.0 (26.72kb, 20 files, ©MIT)
│   │ ├─┬ combined-stream@1.0.8 (1 dep, 19.08kb, 11 files, ©MIT)
│   │ │ ╰── delayed-stream@1.0.0 (7.83kb, 6 files, ©MIT)
│   │ ╰─┬ mime-types@2.1.35 (1 dep, 218.57kb, 11 files, ©MIT)
│   │   ╰── mime-db@1.52.0 (200.72kb, 6 files, ©MIT)
│   ├─┬ html-encoding-sniffer@3.0.0 (3 deps, 405.6kb, 50 files, ©MIT)
│   │ ╰── whatwg-encoding@2.0.0 (🔗, 2 deps, 394.2kb, 46 files, ©MIT)
│   ├─┬ http-proxy-agent@5.0.0 (4 deps, 114.52kb, 41 files, ©MIT)
│   │ ├── @tootallnate/once@2.0.0 (15.95kb, 12 files, ©MIT)
│   │ ├─┬ agent-base@6.0.2 (2 deps, 81.89kb, 21 files, ©MIT)
│   │ │ ╰── debug@4.3.5 (🔗, 1 dep, 48.12kb, 11 files, ©MIT)
│   │ ╰─┬ debug@4.3.5 (1 dep, 48.12kb, 11 files, ©MIT)
│   │   ╰── ms@2.1.2 (6.68kb, 4 files, ©MIT)
│   ├─┬ https-proxy-agent@5.0.1 (5 deps, 155.4kb, 43 files, ©MIT)
│   │ ├─┬ agent-base@6.0.2 (2 deps, 81.89kb, 21 files, ©MIT)
│   │ │ ╰── debug@4.3.5 (🔗, 1 dep, 48.12kb, 11 files, ©MIT)
│   │ ╰─┬ debug@4.3.5 (1 dep, 48.12kb, 11 files, ©MIT)
│   │   ╰── ms@2.1.2 (6.68kb, 4 files, ©MIT)
│   ├── is-potential-custom-element-name@1.0.1 (3.83kb, 4 files, ©MIT)
│   ├── nwsapi@2.2.10 (78.8kb, 7 files, ©MIT)
│   ├─┬ parse5@7.1.2 (1 dep, 1.06mb, 132 files, ©MIT)
│   │ ╰── entities@4.5.0 (403.21kb, 68 files, ©BSD-2-Clause)
│   ├─┬ saxes@6.0.0 (1 dep, 217.51kb, 23 files, ©ISC)
│   │ ╰── xmlchars@2.2.0 (57.58kb, 18 files, ©MIT)
│   ├── symbol-tree@3.2.4 (55.74kb, 7 files, ©MIT)
│   ├─┬ tough-cookie@4.1.4 (6 deps, 673.84kb, 48 files, ©BSD-3-Clause)
│   │ ├── psl@1.9.0 (450.63kb, 9 files, ©MIT)
│   │ ├── punycode@2.3.1 (32.73kb, 5 files, ©MIT)
│   │ ├── universalify@0.2.0 (4.67kb, 4 files, ©MIT)
│   │ ╰─┬ url-parse@1.5.10 (2 deps, 76.64kb, 18 files, ©MIT)
│   │   ├── querystringify@2.2.0 (6.8kb, 4 files, ©MIT)
│   │   ╰── requires-port@1.0.0 (8.36kb, 7 files, ©MIT)
│   ├─┬ w3c-xmlserializer@4.0.0 (1 dep, 30.79kb, 10 files, ©MIT)
│   │ ╰── xml-name-validator@4.0.0 (🔗, 13.23kb, 4 files, ©Apache-2.0)
│   ├── webidl-conversions@7.0.0 (23.67kb, 4 files, ©BSD-2-Clause)
│   ├─┬ whatwg-encoding@2.0.0 (2 deps, 394.2kb, 46 files, ©MIT)
│   │ ╰─┬ iconv-lite@0.6.3 (1 dep, 381.66kb, 40 files, ©MIT)
│   │   ╰── safer-buffer@2.1.2 (41.31kb, 7 files, ©MIT)
│   ├── whatwg-mimetype@3.0.0 (16.42kb, 8 files, ©MIT)
│   ├─┬ whatwg-url@11.0.0 (3 deps, 359.1kb, 33 files, ©MIT)
│   │ ├─┬ tr46@3.0.0 (1 dep, 242.95kb, 12 files, ©MIT)
│   │ │ ╰── punycode@2.3.1 (🔗, 32.73kb, 5 files, ©MIT)
│   │ ╰── webidl-conversions@7.0.0 (🔗, 23.67kb, 4 files, ©BSD-2-Clause)
│   ├── ws@8.18.0 (143.21kb, 19 files, ©MIT)
│   ╰── xml-name-validator@4.0.0 (13.23kb, 4 files, ©Apache-2.0)
├── lodash@4.17.21 (1.35mb, 1054 files, ©MIT)
╰─┬ ts-jest@29.1.5 (33 deps, 3.8mb, 531 files, ©MIT)
  ├─┬ bs-logger@0.2.6 (1 dep, 63.26kb, 42 files, ©MIT)
  │ ╰── fast-json-stable-stringify@2.1.0 (🔗, 16.56kb, 18 files, ©MIT)
  ├── fast-json-stable-stringify@2.1.0 (16.56kb, 18 files, ©MIT)
  ├─┬ jest-util@29.7.0 (25 deps, 2.97mb, 304 files, ©MIT)
  │ ├── @jest/types@29.6.3 (🔗, 15 deps, 2.7mb, 220 files, ©MIT)
  │ ├── @types/node@20.14.9 (🔗, 1 dep, 2.06mb, 100 files, ©MIT)
  │ ├─┬ chalk@4.1.2 (5 deps, 95.08kb, 33 files, ©MIT)
  │ │ ├─┬ ansi-styles@4.3.0 (2 deps, 49.67kb, 16 files, ©MIT)
  │ │ │ ╰─┬ color-convert@2.0.1 (1 dep, 33.09kb, 11 files, ©MIT)
  │ │ │   ╰── color-name@1.1.4 (6.54kb, 4 files, ©MIT)
  │ │ ╰─┬ supports-color@7.2.0 (1 dep, 11.19kb, 10 files, ©MIT)
  │ │   ╰── has-flag@4.0.0 (4.32kb, 5 files, ©MIT)
  │ ├── ci-info@3.9.0 (25.45kb, 7 files, ©MIT)
  │ ├── graceful-fs@4.2.11 (31.77kb, 7 files, ©ISC)
  │ ╰── picomatch@2.3.1 (87.84kb, 10 files, ©MIT)
  ├── json5@2.2.3 (229.69kb, 20 files, ©MIT)
  ├── lodash.memoize@4.1.2 (19.65kb, 4 files, ©MIT)
  ├── make-error@1.3.6 (12.14kb, 6 files, ©ISC)
  ├── semver@7.6.2 (93.19kb, 52 files, ©ISC)
  ╰── yargs-parser@21.1.1 (125.46kb, 11 files, ©ISC)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants