wxt-dev / wxt

⚡ Next-gen Web Extension Framework
https://wxt.dev
MIT License
3.24k stars 118 forks source link

`wxt zip` including `.git/` folder in `sources` zip #738

Open uncenter opened 2 weeks ago

uncenter commented 2 weeks ago

Describe the bug

Turns out https://github.com/aklinker1/publish-browser-extension/issues/21 is actually due to the sources zip being 30x larger (6mb to 190mb) after upgrading from 0.17.3 to 0.18.x, and Mozilla refusing to accept such a wildly large file. I believe this is due to https://github.com/wxt-dev/wxt/pull/674 somehow leading to my .git/ folder being included in the sources zip, confirmed after downloading it from the release assets of my project and listing the contents of it:

CleanShot 2024-06-16 at 14 54 43@2x

Also either that, zipping so many .git/ files, or https://github.com/wxt-dev/wxt/pull/501, is causing FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory when I try to run wxt zip on 0.18.x.

Reproduction

Not minimal unfortunately but easily demonstrates the issue by changing the version of wxt installed: https://github.com/catppuccin/github-file-explorer-icons.

Steps to reproduce

  1. git clone --recurse-submodules https://github.com/catppuccin/github-file-explorer-icons.git
  2. pnpm install in the project directory.
  3. pnpm zip:firefox, note that WXT will list the size of the sources zip in the terms of 100s of MB.
  4. pnpm add -D wxt@0.17.3
  5. Delete the dist/ directory for good measure (I think this bug was even including its own output zips in later zips?).
  6. pnpm zip:firefox, note that WXT will list the size of the sources zip as 5-6 MB.

System Info

System:
    OS: macOS 15.0
    CPU: (8) arm64 Apple M1
    Memory: 85.48 MB / 8.00 GB
    Shell: 3.7.1 - /run/current-system/sw/bin/fish
  Binaries:
    Node: 20.14.0 - ~/.local/state/fnm_multishells/10829_1718488770533/bin/node
    npm: 10.7.0 - ~/.local/state/fnm_multishells/10829_1718488770533/bin/npm
    pnpm: 9.3.0 - ~/.local/state/fnm_multishells/5285_1718466025130/bin/pnpm
    bun: 1.1.10 - /run/current-system/sw/bin/bun
  Browsers:
    Chrome: 126.0.6478.61
    Safari: 18.0
  npmPackages:
    wxt: 0.18.6 => 0.18.6

Used Package Manager

pnpm

Validations

aklinker1 commented 2 weeks ago

Ok, this is bad. If dot files are being included in ZIPs by default, I need to address that ASAP.

For now, I'll revert #674 and release an update. Not at home right now, so give me a few hours.

aklinker1 commented 2 weeks ago

Reverted in #742. Prepping release now.

aklinker1 commented 2 weeks ago

For future reference, when I get around to fixing this, this didn't cause dotfiles in the root directory to be included, it included non-dotfiles inside dotfile directories, like .git. Need to add a test to catch this, re-enable the two tests skipped in #742, and fix both issues.

aklinker1 commented 2 weeks ago

Revert released in v0.18.7

uncenter commented 2 weeks ago

Amazing thank you! Glad you could figure out the issue - I was scratching my head for a good bit why that test wasn't catching this 😅

aklinker1 commented 6 days ago

Looks like this line might be the problem?

https://github.com/wxt-dev/wxt/blob/0ffc6eae3ee67ae63ddf9decdc18407d2b124825/packages/wxt/src/core/utils/building/resolve-config.ts#L260

Noticed this when reviewing someone else's PR, but looks like this is only excluding hidden files, not hidden directories.

uncenter commented 6 days ago

Maybe! Probably best to implement the fixed tests you mentioned earlier and then see if changing that glob does the trick?

aklinker1 commented 6 days ago

Yup, just wanted to write that down so I don't forget about it when I get around to this