Skip to content

fix: use cross-platform Node script for postinstall symlinks#577

Merged
decepulis merged 2 commits intomainfrom
fix/cross-platform-symlinks
Feb 19, 2026
Merged

fix: use cross-platform Node script for postinstall symlinks#577
decepulis merged 2 commits intomainfrom
fix/cross-platform-symlinks

Conversation

@decepulis
Copy link
Copy Markdown
Collaborator

@decepulis decepulis commented Feb 19, 2026

Summary

  • The postinstall scripts used ln -s and [ -e ] (Unix-only shell commands) which fail on Windows
  • Replaced with a Node.js script (scripts/link-aliases.mjs) that uses fs.symlinkSync with 'junction' type for directory symlinks, which works on Windows without elevated privileges
  • File symlinks (e.g., AGENTS.md → CLAUDE.md) still require Developer Mode on Windows — if creation fails, the script logs a warning instead of crashing pnpm install
  • Consolidated link:opencode and link:agents into a single link:aliases script
  • Documented the Windows behavior in CONTRIBUTING.md

Closes #576

Test plan

  • Verified script is idempotent (no-op when symlinks already exist)
  • Verified symlink creation from scratch (removed existing symlinks, re-ran script)
  • Verify pnpm install works on Windows (ty @dh-mux)

🤖 Generated with Claude Code

The postinstall scripts used `ln -s` and `[ -e ]` which are Unix-only
and fail on Windows. Replace with a Node.js script that uses
`fs.symlinkSync` with junction type for directories, which works on
Windows without elevated privileges.

Closes #576

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@netlify
Copy link
Copy Markdown

netlify bot commented Feb 19, 2026

Deploy Preview for vjs10-site ready!

Name Link
🔨 Latest commit 96ff48a
🔍 Latest deploy log https://app.netlify.com/projects/vjs10-site/deploys/699761ac5c09780007666b7d
😎 Deploy Preview https://deploy-preview-577--vjs10-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@vercel
Copy link
Copy Markdown

vercel bot commented Feb 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
vjs-10-demo-react Ignored Ignored Preview Feb 19, 2026 7:17pm

Request Review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 19, 2026

📦 Bundle Size Report

Package Size Diff %
@videojs/core 5.67 kB 0 B ░░░░░░░░ 0%
@videojs/element 1.60 kB 0 B ░░░░░░░░ 0%
@videojs/html 8.63 kB 0 B ░░░░░░░░ 0%
@videojs/icons 3.46 kB 0 B ░░░░░░░░ 0%
@videojs/react 12.82 kB 0 B ░░░░░░░░ 0%
@videojs/store 1.94 kB 0 B ░░░░░░░░ 0%
@videojs/utils 2.47 kB 0 B ░░░░░░░░ 0%

Total: 36.60 kB · 0 B · 0%


Entry Breakdown

Subpath sizes are the additional bytes on top of the root entry point, measured by bundling root + subpath together and subtracting the root-only size.

@videojs/core
Entry Base PR Diff %
. 3.09 kB 3.09 kB 0 B 0%
./dom 2.58 kB 2.58 kB 0 B 0%
total 5.67 kB 5.67 kB 0 B 0%
@videojs/element
Entry Base PR Diff %
. 817 B 817 B 0 B 0%
./context 823 B 823 B 0 B 0%
total 1.60 kB 1.60 kB 0 B 0%
@videojs/icons
Entry Base PR Diff %
./react 2.10 kB 2.10 kB 0 B 0%
./html 1.37 kB 1.37 kB 0 B 0%
total 3.46 kB 3.46 kB 0 B 0%
@videojs/react
Entry Base PR Diff %
. 7.69 kB 7.69 kB 0 B 0%
./audio 266 B 266 B 0 B 0%
./background 35 B 35 B 0 B 0%
./video 4.84 kB 4.84 kB 0 B 0%
total 12.82 kB 12.82 kB 0 B 0%
@videojs/store
Entry Base PR Diff %
. 1.29 kB 1.29 kB 0 B 0%
./html 468 B 468 B 0 B 0%
./react 199 B 199 B 0 B 0%
total 1.94 kB 1.94 kB 0 B 0%
@videojs/utils
Entry Base PR Diff %
./array 104 B 104 B 0 B 0%
./dom 684 B 684 B 0 B 0%
./events 227 B 227 B 0 B 0%
./function 197 B 197 B 0 B 0%
./object 119 B 119 B 0 B 0%
./predicate 265 B 265 B 0 B 0%
./string 110 B 110 B 0 B 0%
./style 185 B 185 B 0 B 0%
./time 478 B 478 B 0 B 0%
./number 158 B 158 B 0 B 0%
total 2.47 kB 2.47 kB 0 B 0%

ℹ️ How to interpret

Sizes are minified + brotli, measured with esbuild.
Package totals are computed as root size + marginal subpath costs.
Subpath marginal cost = (root + subpath bundled together) − root alone.

Icon Meaning
No change
🔺 Increased ≤ 10%
🔴 Increased > 10%
🔽 Decreased
🆕 New (no baseline)

Run pnpm size locally to check current sizes.

Add a JSDoc comment to link-aliases.mjs explaining the aliases created
and Windows-specific behavior. Add a note in CONTRIBUTING.md under Setup
about the symlinks and Windows Developer Mode requirement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@decepulis decepulis merged commit ca55e0a into main Feb 19, 2026
12 checks passed
@decepulis decepulis deleted the fix/cross-platform-symlinks branch February 19, 2026 19:22
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

Successfully merging this pull request may close these issues.

pnpm install fails on Windows

1 participant