Isolate content script build to prevent silent chunk-import breakage#41
Draft
Isolate content script build to prevent silent chunk-import breakage#41
Conversation
Build the content script as a separate single-entry Vite config so all imports are always bundled inline, preventing silent runtime breakage if shared imports are added to selection-overlay.ts in future refactors. Co-authored-by: numbers-official <181934381+numbers-official@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] [Feature] Fix Vite chunk output risks for content script isolation
Isolate content script build to prevent silent chunk-import breakage
Mar 15, 2026
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.
Chrome content scripts injected via
chrome.scripting.executeScriptmust be self-contained — they cannot resolve Rollup-emitted chunk imports at runtime. Includingselection-overlay.tsin the multi-entry build was a latent trap: any future shared import would silently break the content script with no build-time warning.Changes
vite.content.config.ts(new) — Dedicated single-entry Vite build for the content script. A single-entry Rollup build inlines all static imports unconditionally; no chunks are ever emitted regardless of future refactors.emptyOutDir: falseappends todist/without clobbering the main build.vite.config.ts— Removescontent/selection-overlayfrom the multi-entry input.package.json— Runs both builds sequentially:The result:
dist/content/selection-overlay.jsis a fully self-contained bundle. Future imports added to the content script will always be inlined, making the isolation structural rather than incidental.Original prompt
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.