UNPKG

node-version-use

Version:

Cross-platform solution for using multiple versions of node. Useful for compatibility testing

45 lines (44 loc) 1.55 kB
/** * Postinstall script for node-version-use * * Downloads the platform-specific binary and installs it to ~/.nvu/bin/ * This enables transparent Node version switching. * * Uses safe atomic download pattern: * 1. Download to temp file * 2. Extract to temp directory * 3. Atomic rename to final location */ const exit = require('exit-compat'); const path = require('path'); const os = require('os'); const { installBinaries, printInstructions, syncAllShims } = require('./installBinaries.cjs'); const hasHomedir = typeof os.homedir === 'function'; function homedir() { if (hasHomedir) return os.homedir(); const home = require('homedir-polyfill'); return home(); } // Allow NVU_HOME override for testing const storagePath = process.env.NVU_HOME || path.join(homedir(), '.nvu'); /** * Main installation function */ function main() { installBinaries({}, (err, installed)=>{ if (err) { console.log(`postinstall warning: Failed to install binary: ${err.message || err}`); console.log('You can still use nvu with explicit versions: nvu 18 npm test'); return exit(1); } if (installed) { // Sync all shims to the new binary version const binDir = path.join(storagePath, 'bin'); syncAllShims(binDir); printInstructions(); console.log('postinstall: Binary installed successfully!'); } else { console.log('postinstall: Binaries already up to date.'); } exit(0); }); } main();