1- import { exec as execCb } from 'node:child_process'
1+ import { execFile as execFileCb } from 'node:child_process'
22import { readFileSync } from 'node:fs'
33import fs from 'node:fs/promises'
44import { dirname , resolve } from 'node:path'
55import { promisify } from 'node:util'
66import { DefaultMap } from '../../../tailwindcss/src/utils/default-map'
77import { error , warn } from './renderer'
88
9- const exec = promisify ( execCb )
9+ const execFile = promisify ( execFileCb )
10+
11+ async function run ( packageManager : string , args : string [ ] , cwd : string ) {
12+ if ( process . platform === 'win32' && packageManager !== 'bun' ) {
13+ return await execFile ( `${ packageManager } .cmd` , args , { cwd } )
14+ }
15+
16+ return await execFile ( packageManager , args , { cwd } )
17+ }
1018
1119const SAVE_DEV : Record < string , string > = {
1220 default : '-D' ,
@@ -43,7 +51,7 @@ export function pkg(base: string) {
4351
4452 let command = `${ packageManager } add ${ args . join ( ' ' ) } `
4553 try {
46- return await exec ( command , { cwd : base } )
54+ return await run ( packageManager , [ 'add' , ... args ] , base )
4755 } catch ( e : any ) {
4856 error ( `An error occurred while running \`${ command } \`\n\n${ e . stdout } \n${ e . stderr } ` , {
4957 prefix : '↳ ' ,
@@ -60,7 +68,7 @@ export function pkg(base: string) {
6068 let packageManager = await packageManagerForBase . get ( base )
6169 let command = `${ packageManager } remove ${ packages . join ( ' ' ) } `
6270 try {
63- return await exec ( command , { cwd : base } )
71+ return await run ( packageManager , [ 'remove' , ... packages ] , base )
6472 } catch ( e : any ) {
6573 error ( `An error occurred while running \`${ command } \`\n\n${ e . stdout } \n${ e . stderr } ` , {
6674 prefix : '↳ ' ,
0 commit comments