1import { ConfigPlugin, withPlugins } from '@expo/config-plugins'; 2 3import { serializeAfterStaticPlugins } from '../Serialize'; 4 5/** 6 * Resolves static plugins array as config plugin functions. 7 * 8 * @param config 9 * @param projectRoot 10 */ 11export const withConfigPlugins: ConfigPlugin<boolean> = (config, skipPlugins) => { 12 // @ts-ignore: plugins not on config type yet -- TODO 13 if (!Array.isArray(config.plugins) || !config.plugins?.length) { 14 return config; 15 } 16 if (!skipPlugins) { 17 // Resolve and evaluate plugins 18 // @ts-ignore: TODO: add plugins to the config schema 19 config = withPlugins(config, config.plugins); 20 } else { 21 // Delete the plugins array in case someone added functions or other values which cannot be automatically serialized. 22 delete config.plugins; 23 } 24 // plugins aren't serialized by default, serialize the plugins after resolving them. 25 return serializeAfterStaticPlugins(config); 26}; 27