diff --git a/apps/demos/utils/create-bundles/Angular/bundler.ts b/apps/demos/utils/create-bundles/Angular/bundler.ts index ca2d8dbe953e..d5200fe4b708 100644 --- a/apps/demos/utils/create-bundles/Angular/bundler.ts +++ b/apps/demos/utils/create-bundles/Angular/bundler.ts @@ -1,4 +1,4 @@ -import { exec } from 'child_process'; +import { spawn } from 'child_process'; import { BuildOptions } from 'esbuild'; import { existsSync, mkdirSync, removeSync } from 'fs-extra'; import { Demo, Framework } from '../helper/types'; @@ -42,8 +42,11 @@ export default class AngularBundler implements Bundler { createDemoLayout(demo, this.framework); - const ngBuildCommand = `npm run build-angular -- ${getProjectNameByDemo(demo)}`; - const ngBuildProcess = exec(ngBuildCommand); + const isWin = process.platform === 'win32'; + const [npmCmd, npmArgs] = isWin + ? ['cmd', ['/c', 'npm.cmd', 'run', 'build-angular', '--', getProjectNameByDemo(demo)]] + : ['npm', ['run', 'build-angular', '--', getProjectNameByDemo(demo)]]; + const ngBuildProcess = spawn(npmCmd, npmArgs); ngBuildProcess.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); diff --git a/apps/demos/utils/ts-to-js-converter/converter.ts b/apps/demos/utils/ts-to-js-converter/converter.ts index 4101fe599c6e..6e0c47d661bc 100644 --- a/apps/demos/utils/ts-to-js-converter/converter.ts +++ b/apps/demos/utils/ts-to-js-converter/converter.ts @@ -78,15 +78,13 @@ const pipeSource = async ( })); }; -const execTsc = async (directory: string, args: string): Promise => new Promise((resolve, reject) => { - cps.exec(`tsc ${args}`, (error, stdout, stderr) => { - if (error != null) { - // eslint-disable-next-line prefer-promise-reject-errors - return reject(`${error}\n${stderr}\n${stdout}`); - } - return resolve(stdout); - }); -}); +const execTsc = async (directory: string, args: string[]): Promise => { + const [cmd, cmdArgs] = isWindows() + ? ['cmd', ['/c', 'tsc.cmd', ...args]] + : ['tsc', args]; + const { stdout } = await promisify(cps.execFile)(cmd, cmdArgs, { cwd: directory }); + return stdout; +}; const compile = async (resolve: PathResolvers, log: Logger) => { log.debug('compiling sources and unit tests'); @@ -109,7 +107,7 @@ const compile = async (resolve: PathResolvers, log: Logger) => { ), ); - await execTsc(resolve.source('./'), `--build ${tsconfigFile}`); + await execTsc(resolve.source('./'), ['--build', tsconfigFile]); }; const copyAssets = async (resolve: PathResolvers, log: Logger) => { @@ -140,6 +138,7 @@ const strip = async (resolve: PathResolvers, log: Logger) => { }); }; +// eslint-disable-next-line require-await const replaceInFiles = async (filenamePatterns: string[], replacementCallback: (string) => string, resolvePath: (string) => string, log: Logger) => ( Promise.all( filenamePatterns.map(async (pattern) => {