Skip to content
This repository has been archived by the owner on Jan 18, 2024. It is now read-only.

[config-plugins] create package #2956

Merged
merged 11 commits into from
Nov 26, 2020

Conversation

EvanBacon
Copy link
Contributor

@EvanBacon EvanBacon commented Nov 26, 2020

Why

  • expo/config is too large and a lot of features in it are out of scope.
    • eas-cli doesn't use any features from config-plugins, but still has splash-screen, jimp, and other unrelated packages added.
  • plugin authors need a light-weight package to install with all the required logic for building plugins.
    • currently config-plugins is still too large, but baby steps!
  • expo/config-plugins currently contains four conceptual features
    • basic plugins/mods -- used for creating custom plugins for packages, also types for config plugins and mods
    • mod compiler -- all plugins don't really need this, only expo cli (specifically eject) requires this functionality, eventually we can move it out, but right now it's pretty small.
    • first-party plugins -- versioned with expo, first party plugins that every project requires, these apply changes from the Expo config schema. Things like name, bundle identifier, package, schemes, etc. Eventually these could be moved.
    • third-party plugins -- versioned with packages, currently these exist in config-plugins until we migrate them to their own dedicated packages like expo-facebook, expo-google, expo-branch, etc. Eventually these will be removed.
  • config doesn't currently depend on config-plugins, but that could change in the future when static configs are added.

How

  • The README that was in config/src/plugins should now make sense (master plan).

Test Plan

  • This is our most tested code.

Stack traces remain the same:

iOS

ios.dangerous: withBaseMods ➜ withExpoDangerousBaseMod
ios.dangerous: withExpoIOSPlugins ➜ withPlugins ➜ withSplashScreen ➜ withDangerousMod ➜ withExtendedMod
ios.dangerous: withExpoIOSPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withExtendedMod
ios.dangerous: withExpoIOSPlugins ➜ withPlugins ➜ withBundleIdentifier ➜ withDangerousMod ➜ withExtendedMod
ios.infoPlist: withBaseMods ➜ withIosInfoPlistBaseMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withVersion ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withBuildNumber ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withUsesNonExemptEncryption ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withUserInterfaceStyle ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withScheme ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withRequiresFullScreen ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withOrientation ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withDisplayName ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withGoogle ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withFacebook ➜ withInfoPlist ➜ withExtendedMod
ios.infoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withBranch ➜ withInfoPlist ➜ withExtendedMod
ios.xcodeproj: withBaseMods ➜ withXcodeProjectBaseMod
ios.xcodeproj: withExpoIOSPlugins ➜ withPlugins ➜ withLocales ➜ withXcodeProject ➜ withExtendedMod
ios.xcodeproj: withExpoIOSPlugins ➜ withPlugins ➜ withDeviceFamily ➜ withXcodeProject ➜ withExtendedMod
ios.xcodeproj: withExpoIOSPlugins ➜ withPlugins ➜ withGoogleServicesFile ➜ withXcodeProject ➜ withExtendedMod
ios.expoPlist: withBaseMods ➜ withExpoPlistBaseMod
ios.expoPlist: withExpoIOSPlugins ➜ withPlugins ➜ withUpdates ➜ withExpoPlist ➜ withExtendedMod
ios.entitlements: withBaseMods ➜ withEntitlementsBaseMod
ios.entitlements: withExpoIOSPlugins ➜ withPlugins ➜ withAssociatedDomains ➜ withEntitlementsPlist ➜ withExtendedMod
ios.entitlements: withExpoIOSPlugins ➜ withPlugins ➜ withICloudEntitlement ➜ withEntitlementsPlist ➜ withExtendedMod
ios.entitlements: withExpoIOSPlugins ➜ withPlugins ➜ withAccessesContactNotes ➜ withEntitlementsPlist ➜ withExtendedMod
ios.entitlements: withExpoIOSPlugins ➜ withPlugins ➜ withAppleSignInEntitlement ➜ withEntitlementsPlist ➜ withExtendedMod

Android

android.dangerous: withBaseMods ➜ withExpoDangerousBaseMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withPackageRefactor ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withSplashScreen ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withPrimaryColor ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withStatusBar ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withNavigationBar ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withRootViewBackgroundColor ➜ withDangerousMod ➜ withExtendedMod
android.dangerous: withExpoAndroidPlugins ➜ withPlugins ➜ withGoogleServicesFile ➜ withDangerousMod ➜ withExtendedMod
android.settingsGradle: withBaseMods ➜ withAndroidSettingsGradleBaseMod
android.settingsGradle: withExpoAndroidPlugins ➜ withPlugins ➜ withNameSettingsGradle ➜ withSettingsGradle ➜ withExtendedMod
android.projectBuildGradle: withBaseMods ➜ withAndroidProjectBuildGradleBaseMod
android.projectBuildGradle: withExpoAndroidPlugins ➜ withPlugins ➜ withClassPath ➜ withProjectBuildGradle ➜ withExtendedMod
android.appBuildGradle: withBaseMods ➜ withAndroidAppBuildGradleBaseMod
android.appBuildGradle: withExpoAndroidPlugins ➜ withPlugins ➜ withVersion ➜ withAppBuildGradle ➜ withExtendedMod
android.appBuildGradle: withExpoAndroidPlugins ➜ withPlugins ➜ withPackageGradle ➜ withAppBuildGradle ➜ withExtendedMod
android.appBuildGradle: withExpoAndroidPlugins ➜ withPlugins ➜ withApplyPlugin ➜ withAppBuildGradle ➜ withExtendedMod
android.manifest: withBaseMods ➜ withAndroidManifestBaseMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withUpdates ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withAndroidIntentFilters ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withGoogleMapsApiKey ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withGoogleMobileAdsConfig ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withUiModeManifest ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withFacebookManifest ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withBranch ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withPermissions ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withOrientation ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withScheme ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withAllowBackup ➜ withAndroidManifest ➜ withExtendedMod
android.manifest: withExpoAndroidPlugins ➜ withPlugins ➜ withPackageManifest ➜ withAndroidManifest ➜ withExtendedMod
android.mainActivity: withBaseMods ➜ withAndroidMainActivityBaseMod
android.mainActivity: withExpoAndroidPlugins ➜ withPlugins ➜ withUiModeMainActivity ➜ withMainActivity ➜ withExtendedMod
android.strings: withBaseMods ➜ withAndroidStringsXMLBaseMod
android.strings: withExpoAndroidPlugins ➜ withPlugins ➜ withFacebookAppIdString ➜ withStringsXml ➜ withExtendedMod
android.strings: withExpoAndroidPlugins ➜ withPlugins ➜ withName ➜ withStringsXml ➜ withExtendedMod

@EvanBacon EvanBacon added enhancement New feature or request Expo config Related to the app.json config for Expo projects labels Nov 26, 2020
Copy link
Member

@brentvatne brentvatne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beauty

@EvanBacon EvanBacon marked this pull request as ready for review November 26, 2020 19:45
@EvanBacon EvanBacon merged commit 557a582 into master Nov 26, 2020
@EvanBacon EvanBacon deleted the @evanbacon/config-plugins/create-package branch November 26, 2020 20:00
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request Expo config Related to the app.json config for Expo projects
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants