1+ const fs = require ( 'fs' ) ;
2+ const path = require ( 'path' ) ;
3+ const { execSync } = require ( 'child_process' ) ;
4+ const flagFile = path . join ( process . cwd ( ) , '.peer-deps-installed' ) ;
5+
6+ if ( fs . existsSync ( flagFile ) ) {
7+ console . log ( 'Peer dependencies already installed, skipping...' ) ;
8+ fs . rmSync ( flagFile ) ;
9+ process . exit ( 0 ) ;
10+ }
11+
12+ try {
13+ const pkgPath = path . join ( process . cwd ( ) , 'package.json' ) ;
14+ const pkg = JSON . parse ( fs . readFileSync ( pkgPath , 'utf8' ) ) ;
15+ const peerDeps = pkg . webteamDependencies || { } ;
16+
17+ if ( Object . keys ( peerDeps ) . length === 0 ) {
18+ console . log ( 'No optional peer dependencies to install.' ) ;
19+ process . exit ( 0 ) ;
20+ }
21+
22+ if ( process . env . USE_FALLBACK_FOR_INTERNAL_PACKAGES === '1' ) {
23+ console . log ( 'No external packages are installed, using fallback.' ) ;
24+ process . exit ( 0 ) ;
25+ }
26+
27+ const packagesToInstall = Object . entries ( peerDeps )
28+ . map ( ( [ name , version ] ) => `${ name } @${ version . replace ( / " / g, '' ) } ` )
29+ . join ( ' ' ) ;
30+
31+ console . log ( `Installing ${ packagesToInstall } as optional peer dependencies...` ) ;
32+
33+ execSync ( `npm install --no-package-lock --no-save --legacy-peer-deps ${ packagesToInstall } ` , { stdio : 'inherit' } ) ;
34+
35+ fs . writeFileSync ( flagFile , new Date ( ) . toISOString ( ) ) ;
36+
37+ console . log ( 'Peer dependencies installed successfully.' ) ;
38+ } catch ( err ) {
39+ console . error ( 'Failed to install peer dependencies:' , err . message ) ;
40+ process . exit ( 1 ) ;
41+ }
0 commit comments