UNPKG

rock

Version:

Command-line interface for Rock - a React Native development toolkit

56 lines 2.13 kB
function isValidRNDependency(config) { return (Object.keys(config.platforms).filter((key) => Boolean(config.platforms[key])).length !== 0); } function filterConfig(config) { const filtered = { ...config }; // `react-native` is not a dependency. When loading it through community CLI it's not an issue, // but in our case we don't install `@react-native-community/cli-platform-*` as a dependencies // so the config.platforms key is empty, which makes autolinking treat it as a dependency. delete filtered.dependencies['react-native']; // we don't want to show commands in the config filtered.commands = []; const dependencies = {}; Object.keys(filtered.dependencies).forEach((item) => { if (isValidRNDependency(filtered.dependencies[item])) { dependencies[item] = filtered.dependencies[item]; } }); return { ...filtered, dependencies, }; } export const logConfig = async (args, ownConfig) => { const { loadConfigAsync } = await import('@react-native-community/cli-config'); const config = await loadConfigAsync({ projectRoot: ownConfig.root, selectedPlatform: args.platform, }); const platforms = ownConfig.platforms && args.platform ? { [args.platform]: ownConfig.platforms[args.platform] } : ownConfig.platforms; for (const platform in platforms) { config.project[platform] = platforms[platform].autolinkingConfig.project; } console.log(JSON.stringify(filterConfig(config), null, 2)); }; export const logConfigPlugin = (ownConfig) => (api) => { api.registerCommand({ name: 'config', description: 'Output autolinking config', action: async (args) => { await logConfig(args, ownConfig); }, options: [ { name: '-p, --platform <string>', description: 'Select platform, e.g. ios, android, or harmony', }, ], }); return { name: 'internal_config', description: 'Configuration plugin', }; }; //# sourceMappingURL=logConfig.js.map