Files
react-native/packages/community-cli-plugin/src/commands/bundle/index.js
T
Alex Hunt 4e92f87dfd Align parsing of custom resolver options, rename arg (#42392)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/42392

Follow-up to https://github.com/facebook/react-native/pull/42333 following internal feedback. We are now aligning this to match the [`metro build` command](https://github.com/facebook/metro/blob/702e1b8fc7ab8b973bcd53f1a41f7e797cbf7dca/packages/metro/src/commands/build.js#L85-L91). This also improves validation on parsing (done after initial `commander` arg parsing as variadic string).

Changelog: [Internal]
(same as https://github.com/facebook/react-native/pull/42333)

Reviewed By: motiz88

Differential Revision: D52911017

fbshipit-source-id: 54049aa20c9db344a0f485fddf62fb267e672376
2024-01-22 10:31:51 -08:00

128 lines
3.9 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
* @oncall react_native
*/
import type {Command} from '@react-native-community/cli-types';
import buildBundle from './buildBundle';
import path from 'path';
export type {BundleCommandArgs} from './buildBundle';
const bundleCommand: Command = {
name: 'bundle',
description: 'Build the bundle for the provided JavaScript entry file.',
func: buildBundle,
options: [
{
name: '--entry-file <path>',
description:
'Path to the root JS file, either absolute or relative to JS root',
},
{
name: '--platform <string>',
description: 'Either "ios" or "android"',
default: 'ios',
},
{
name: '--transformer <string>',
description: 'Specify a custom transformer to be used',
},
{
name: '--dev [boolean]',
description: 'If false, warnings are disabled and the bundle is minified',
parse: (val: string): boolean => val !== 'false',
default: true,
},
{
name: '--minify [boolean]',
description:
'Allows overriding whether bundle is minified. This defaults to ' +
'false if dev is true, and true if dev is false. Disabling minification ' +
'can be useful for speeding up production builds for testing purposes.',
parse: (val: string): boolean => val !== 'false',
},
{
name: '--bundle-output <string>',
description:
'File name where to store the resulting bundle, ex. /tmp/groups.bundle',
},
{
name: '--bundle-encoding <string>',
description:
'Encoding the bundle should be written in (https://nodejs.org/api/buffer.html#buffer_buffer).',
default: 'utf8',
},
{
name: '--max-workers <number>',
description:
'Specifies the maximum number of workers the worker-pool ' +
'will spawn for transforming files. This defaults to the number of the ' +
'cores available on your machine.',
parse: (workers: string): number => Number(workers),
},
{
name: '--sourcemap-output <string>',
description:
'File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map',
},
{
name: '--sourcemap-sources-root <string>',
description:
"Path to make sourcemap's sources entries relative to, ex. /root/dir",
},
{
name: '--sourcemap-use-absolute-path',
description: 'Report SourceMapURL using its full path',
default: false,
},
{
name: '--assets-dest <string>',
description:
'Directory name where to store assets referenced in the bundle',
},
{
name: '--unstable-transform-profile <string>',
description:
'Experimental, transform JS for a specific JS engine. Currently supported: hermes, hermes-canary, default',
default: 'default',
},
{
name: '--asset-catalog-dest [string]',
description: 'Path where to create an iOS Asset Catalog for images',
},
{
name: '--reset-cache',
description: 'Removes cached files',
default: false,
},
{
name: '--read-global-cache',
description:
'Try to fetch transformed JS code from the global cache, if configured.',
default: false,
},
{
name: '--config <string>',
description: 'Path to the CLI configuration file',
parse: (val: string): string => path.resolve(val),
},
{
name: '--resolver-option <string...>',
description:
'Custom resolver options of the form key=value. URL-encoded. May be specified multiple times.',
parse: (val: string, previous: Array<string> = []): Array<string> =>
previous.concat([val]),
},
],
};
export default bundleCommand;