1import { ExpoConfig, modifyConfigAsync } from '@expo/config'; 2 3import * as Log from '../log'; 4import { warnAboutConfigAndThrow } from './modifyConfigAsync'; 5 6export async function attemptAddingPluginsAsync( 7 projectRoot: string, 8 exp: Pick<ExpoConfig, 'plugins'>, 9 plugins: string[] 10): Promise<void> { 11 if (!plugins.length) return; 12 13 const edits = { 14 plugins: [...new Set((exp.plugins || []).concat(plugins))], 15 }; 16 const modification = await modifyConfigAsync(projectRoot, edits, { 17 skipSDKVersionRequirement: true, 18 skipPlugins: true, 19 }); 20 if (modification.type === 'success') { 21 Log.log(`\u203A Added config plugin${plugins.length === 1 ? '' : 's'}: ${plugins.join(', ')}`); 22 } else { 23 const exactEdits = { 24 plugins, 25 }; 26 warnAboutConfigAndThrow(modification.type, modification.message!, exactEdits); 27 } 28} 29