diff --git a/packages/cli-config/src/__tests__/__snapshots__/index-test.ts.snap b/packages/cli-config/src/__tests__/__snapshots__/index-test.ts.snap index c229660cd..db5139638 100644 --- a/packages/cli-config/src/__tests__/__snapshots__/index-test.ts.snap +++ b/packages/cli-config/src/__tests__/__snapshots__/index-test.ts.snap @@ -145,3 +145,14 @@ Object { "root": "<>/node_modules/react-native-test", } `; + +exports[`supports disabling dependency for ios platform 1`] = ` +Object { + "name": "react-native-test", + "platforms": Object { + "android": null, + "ios": null, + }, + "root": "<>/node_modules/react-native-test", +} +`; diff --git a/packages/cli-config/src/__tests__/index-test.ts b/packages/cli-config/src/__tests__/index-test.ts index 4b2096b77..e102ab061 100644 --- a/packages/cli-config/src/__tests__/index-test.ts +++ b/packages/cli-config/src/__tests__/index-test.ts @@ -339,3 +339,32 @@ test('supports dependencies from user configuration with custom build type', () removeString(dependencies['react-native-test'], DIR), ).toMatchSnapshot(); }); + +test('supports disabling dependency for ios platform', () => { + DIR = getTempDirectory('config_test_disable_dependency_platform'); + writeFiles(DIR, { + ...REACT_NATIVE_MOCK, + 'node_modules/react-native-test/package.json': '{}', + 'node_modules/react-native-test/ReactNativeTest.podspec': '', + 'node_modules/react-native-test/react-native.config.js': ` + module.exports = { + dependency: { + platforms: { + ios: null + } + } + } + `, + 'package.json': `{ + "dependencies": { + "react-native": "0.0.1", + "react-native-test": "0.0.1" + } + }`, + }); + + const {dependencies} = loadConfig(DIR); + expect( + removeString(dependencies['react-native-test'], DIR), + ).toMatchSnapshot(); +}); diff --git a/packages/cli-config/src/schema.ts b/packages/cli-config/src/schema.ts index 6871329ae..234691f7b 100644 --- a/packages/cli-config/src/schema.ts +++ b/packages/cli-config/src/schema.ts @@ -72,7 +72,7 @@ export const dependencyConfig = t scriptPhases: t.array().items(t.object()), configurations: t.array().items(t.string()).default([]), }) - .default({}), + .allow(null), android: t // AndroidDependencyParams .object({ @@ -87,7 +87,7 @@ export const dependencyConfig = t componentDescriptors: t.array().items(t.string()).allow(null), androidMkPath: t.string().allow(null), }) - .default({}), + .allow(null), }) .default(), }) diff --git a/packages/platform-android/src/config/index.ts b/packages/platform-android/src/config/index.ts index c97916e8f..34a5659ac 100644 --- a/packages/platform-android/src/config/index.ts +++ b/packages/platform-android/src/config/index.ts @@ -80,8 +80,12 @@ function getAppName(sourceDir: string, userConfigAppName: string | undefined) { */ export function dependencyConfig( root: string, - userConfig: AndroidDependencyParams = {}, + userConfig: AndroidDependencyParams | null = {}, ): AndroidDependencyConfig | null { + if (userConfig === null) { + return null; + } + const src = userConfig.sourceDir || findAndroidDir(root); if (!src) { diff --git a/packages/platform-ios/src/config/index.ts b/packages/platform-ios/src/config/index.ts index 088b8f44c..59d4a2a2d 100644 --- a/packages/platform-ios/src/config/index.ts +++ b/packages/platform-ios/src/config/index.ts @@ -52,8 +52,12 @@ export function projectConfig( export function dependencyConfig( folder: string, - userConfig: IOSDependencyParams, + userConfig: IOSDependencyParams | null = {}, ): IOSDependencyConfig | null { + if (userConfig === null) { + return null; + } + const podspecPath = findPodspec(folder); if (!podspecPath) {