diff --git a/packages/community-cli-plugin/src/commands/bundle/buildBundle.js b/packages/community-cli-plugin/src/commands/bundle/buildBundle.js index 15bf4ef0325..8cfce1f1699 100644 --- a/packages/community-cli-plugin/src/commands/bundle/buildBundle.js +++ b/packages/community-cli-plugin/src/commands/bundle/buildBundle.js @@ -18,6 +18,7 @@ import {logger} from '../../utils/logger'; import parseKeyValueParamArray from '../../utils/parseKeyValueParamArray'; import saveAssets from './saveAssets'; import chalk from 'chalk'; +import {promises as fs} from 'fs'; import Server from 'metro/src/Server'; import metroBundle from 'metro/src/shared/output/bundle'; import metroRamBundle from 'metro/src/shared/output/RamBundle'; @@ -112,6 +113,12 @@ async function buildBundleWithConfig( try { const bundle = await bundleImpl.build(server, requestOpts); + // Ensure destination directory exists before saving the bundle + await fs.mkdir(path.dirname(args.bundleOutput), { + recursive: true, + mode: 0o755, + }); + // $FlowIgnore[class-object-subtyping] // $FlowIgnore[incompatible-call] // $FlowIgnore[prop-missing]