create-react-native-library 0.35.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/utils/generateExampleApp.js +2 -7
- package/lib/utils/generateExampleApp.js.map +1 -1
- package/package.json +2 -2
- package/templates/common/$.github/workflows/ci.yml +6 -3
- package/templates/common/$package.json +12 -19
- package/templates/common/CONTRIBUTING.md +3 -1
- package/templates/cpp-library/android/CMakeLists.txt +1 -1
- package/templates/native-common/android/build.gradle +6 -0
- package/templates/native-common/{%- project.identifier %}.podspec +18 -18
|
@@ -22,9 +22,6 @@ const PACKAGES_TO_ADD_WEB_DEV = {
|
|
|
22
22
|
'@expo/webpack-config': '^18.0.1',
|
|
23
23
|
'babel-loader': '^8.1.0'
|
|
24
24
|
};
|
|
25
|
-
const PACKAGES_TO_ADD_NATIVE_DEV = {
|
|
26
|
-
'pod-install': '^0.1.0'
|
|
27
|
-
};
|
|
28
25
|
async function generateExampleApp({
|
|
29
26
|
type,
|
|
30
27
|
dest,
|
|
@@ -37,8 +34,8 @@ async function generateExampleApp({
|
|
|
37
34
|
const args = type === 'native' ?
|
|
38
35
|
// `npx react-native init <projectName> --directory example --skip-install`
|
|
39
36
|
['react-native@latest', 'init', `${projectName}Example`, '--directory', directory, '--version', reactNativeVersion, '--skip-install', '--npm'] :
|
|
40
|
-
// `npx create-expo-app example --no-install`
|
|
41
|
-
['create-expo-app@latest', directory, '--no-install'];
|
|
37
|
+
// `npx create-expo-app example --no-install --template blank`
|
|
38
|
+
['create-expo-app@latest', directory, '--no-install', '--template', 'blank'];
|
|
42
39
|
await (0, _spawn.spawn)('npx', args, {
|
|
43
40
|
cwd: dest,
|
|
44
41
|
env: {
|
|
@@ -104,8 +101,6 @@ async function generateExampleApp({
|
|
|
104
101
|
devDependencies[name] = bundledNativeModules[name] || version;
|
|
105
102
|
});
|
|
106
103
|
scripts.web = 'expo start --web';
|
|
107
|
-
} else {
|
|
108
|
-
Object.assign(devDependencies, PACKAGES_TO_ADD_NATIVE_DEV);
|
|
109
104
|
}
|
|
110
105
|
await _fsExtra.default.writeJSON(_path.default.join(directory, 'package.json'), pkg, {
|
|
111
106
|
spaces: 2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_path","_https","_spawn","obj","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_DEV","PACKAGES_TO_ADD_WEB","PACKAGES_TO_ADD_WEB_DEV","PACKAGES_TO_ADD_NATIVE_DEV","generateExampleApp","type","dest","slug","projectName","arch","reactNativeVersion","directory","path","join","args","spawn","cwd","env","process","npm_config_yes","file","fs","remove","pkg","JSON","parse","readFile","name","jest","scripts","dependencies","devDependencies","test","lint","SCRIPTS_TO_ADD","Object","assign","forEach","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","e","entries","version","web","writeJSON","spaces","gradleProperties","writeFile","podfile"],"sources":["../../src/utils/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport https from 'https';\nimport { spawn } from './spawn';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n];\n\nconst PACKAGES_TO_ADD_DEV = {\n 'babel-plugin-module-resolver': '^5.0.0',\n};\n\nconst PACKAGES_TO_ADD_WEB = {\n 'react-dom': '18.2.0',\n 'react-native-web': '~0.18.10',\n};\n\nconst PACKAGES_TO_ADD_WEB_DEV = {\n '@expo/webpack-config': '^18.0.1',\n 'babel-loader': '^8.1.0',\n};\n\nconst PACKAGES_TO_ADD_NATIVE_DEV = {\n 'pod-install': '^0.1.0',\n};\n\nexport default async function generateExampleApp({\n type,\n dest,\n slug,\n projectName,\n arch,\n reactNativeVersion = 'latest',\n}: {\n type: 'expo' | 'native';\n dest: string;\n slug: string;\n projectName: string;\n arch: 'new' | 'mixed' | 'legacy';\n reactNativeVersion?: string;\n}) {\n const directory = path.join(dest, 'example');\n const args =\n type === 'native'\n ? // `npx react-native init <projectName> --directory example --skip-install`\n [\n 'react-native@latest',\n 'init',\n `${projectName}Example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--npm',\n ]\n : // `npx create-expo-app example --no-install`\n ['create-expo-app@latest', directory, '--no-install'];\n\n await spawn('npx', args, {\n cwd: dest,\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = JSON.parse(\n await fs.readFile(path.join(directory, 'package.json'), 'utf8')\n );\n\n pkg.name = `${slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD = {\n 'build:android':\n 'cd android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a',\n 'build:ios': `cd ios && xcodebuild -workspace ${projectName}Example.xcworkspace -scheme ${projectName}Example -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO`,\n };\n\n if (type === 'native') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n });\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (type === 'expo') {\n const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n Object.entries(PACKAGES_TO_ADD_WEB_DEV).forEach(([name, version]) => {\n devDependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n } else {\n Object.assign(devDependencies, PACKAGES_TO_ADD_NATIVE_DEV);\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n // If the library is on new architecture, enable new arch for iOS and Android\n if (arch === 'new') {\n // Android\n // Change newArchEnabled=false to newArchEnabled=true in example/android/gradle.properties\n const gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties.replace('newArchEnabled=false', 'newArchEnabled=true')\n );\n\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generateExampleApp.js","names":["_fsExtra","_interopRequireDefault","require","_path","_https","_spawn","obj","__esModule","default","FILES_TO_DELETE","PACKAGES_TO_REMOVE","PACKAGES_TO_ADD_DEV","PACKAGES_TO_ADD_WEB","PACKAGES_TO_ADD_WEB_DEV","generateExampleApp","type","dest","slug","projectName","arch","reactNativeVersion","directory","path","join","args","spawn","cwd","env","process","npm_config_yes","file","fs","remove","pkg","JSON","parse","readFile","name","jest","scripts","dependencies","devDependencies","test","lint","SCRIPTS_TO_ADD","Object","assign","forEach","sdkVersion","expo","split","replace","bundledNativeModules","Promise","resolve","reject","https","get","res","data","on","chunk","e","entries","version","web","writeJSON","spaces","gradleProperties","writeFile","podfile"],"sources":["../../src/utils/generateExampleApp.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport https from 'https';\nimport { spawn } from './spawn';\n\nconst FILES_TO_DELETE = [\n '__tests__',\n '.buckconfig',\n '.eslintrc.js',\n '.flowconfig',\n '.git',\n '.gitignore',\n '.prettierrc.js',\n 'App.js',\n 'App.tsx',\n 'index.js',\n 'tsconfig.json',\n];\n\nconst PACKAGES_TO_REMOVE = [\n '@react-native/eslint-config',\n '@tsconfig/react-native',\n '@types/jest',\n '@types/react',\n '@types/react-test-renderer',\n '@typescript-eslint/eslint-plugin',\n '@typescript-eslint/parser',\n 'babel-jest',\n 'eslint',\n 'jest',\n 'prettier',\n 'react-test-renderer',\n 'typescript',\n];\n\nconst PACKAGES_TO_ADD_DEV = {\n 'babel-plugin-module-resolver': '^5.0.0',\n};\n\nconst PACKAGES_TO_ADD_WEB = {\n 'react-dom': '18.2.0',\n 'react-native-web': '~0.18.10',\n};\n\nconst PACKAGES_TO_ADD_WEB_DEV = {\n '@expo/webpack-config': '^18.0.1',\n 'babel-loader': '^8.1.0',\n};\n\nexport default async function generateExampleApp({\n type,\n dest,\n slug,\n projectName,\n arch,\n reactNativeVersion = 'latest',\n}: {\n type: 'expo' | 'native';\n dest: string;\n slug: string;\n projectName: string;\n arch: 'new' | 'mixed' | 'legacy';\n reactNativeVersion?: string;\n}) {\n const directory = path.join(dest, 'example');\n const args =\n type === 'native'\n ? // `npx react-native init <projectName> --directory example --skip-install`\n [\n 'react-native@latest',\n 'init',\n `${projectName}Example`,\n '--directory',\n directory,\n '--version',\n reactNativeVersion,\n '--skip-install',\n '--npm',\n ]\n : // `npx create-expo-app example --no-install --template blank`\n [\n 'create-expo-app@latest',\n directory,\n '--no-install',\n '--template',\n 'blank',\n ];\n\n await spawn('npx', args, {\n cwd: dest,\n env: { ...process.env, npm_config_yes: 'true' },\n });\n\n // Remove unnecessary files and folders\n for (const file of FILES_TO_DELETE) {\n await fs.remove(path.join(directory, file));\n }\n\n // Patch the example app's package.json\n const pkg = JSON.parse(\n await fs.readFile(path.join(directory, 'package.json'), 'utf8')\n );\n\n pkg.name = `${slug}-example`;\n\n // Remove Jest config for now\n delete pkg.jest;\n\n const { scripts, dependencies, devDependencies } = pkg;\n\n delete scripts.test;\n delete scripts.lint;\n\n const SCRIPTS_TO_ADD = {\n 'build:android':\n 'cd android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a',\n 'build:ios': `cd ios && xcodebuild -workspace ${projectName}Example.xcworkspace -scheme ${projectName}Example -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO`,\n };\n\n if (type === 'native') {\n Object.assign(scripts, SCRIPTS_TO_ADD);\n }\n\n PACKAGES_TO_REMOVE.forEach((name) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete devDependencies[name];\n });\n\n Object.assign(devDependencies, PACKAGES_TO_ADD_DEV);\n\n if (type === 'expo') {\n const sdkVersion = dependencies.expo.split('.')[0].replace(/[^\\d]/, '');\n\n let bundledNativeModules: Record<string, string>;\n\n try {\n bundledNativeModules = await new Promise((resolve, reject) => {\n https\n .get(\n `https://raw.githubusercontent.com/expo/expo/sdk-${sdkVersion}/packages/expo/bundledNativeModules.json`,\n (res) => {\n let data = '';\n\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () => {\n try {\n resolve(JSON.parse(data));\n } catch (e) {\n reject(e);\n }\n });\n }\n )\n .on('error', reject);\n });\n } catch (e) {\n bundledNativeModules = {};\n }\n\n Object.entries(PACKAGES_TO_ADD_WEB).forEach(([name, version]) => {\n dependencies[name] = bundledNativeModules[name] || version;\n });\n\n Object.entries(PACKAGES_TO_ADD_WEB_DEV).forEach(([name, version]) => {\n devDependencies[name] = bundledNativeModules[name] || version;\n });\n\n scripts.web = 'expo start --web';\n }\n\n await fs.writeJSON(path.join(directory, 'package.json'), pkg, {\n spaces: 2,\n });\n\n // If the library is on new architecture, enable new arch for iOS and Android\n if (arch === 'new') {\n // Android\n // Change newArchEnabled=false to newArchEnabled=true in example/android/gradle.properties\n const gradleProperties = await fs.readFile(\n path.join(directory, 'android', 'gradle.properties'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'android', 'gradle.properties'),\n gradleProperties.replace('newArchEnabled=false', 'newArchEnabled=true')\n );\n\n // iOS\n // Add ENV['RCT_NEW_ARCH_ENABLED'] = 1 on top of example/ios/Podfile\n const podfile = await fs.readFile(\n path.join(directory, 'ios', 'Podfile'),\n 'utf8'\n );\n\n await fs.writeFile(\n path.join(directory, 'ios', 'Podfile'),\n \"ENV['RCT_NEW_ARCH_ENABLED'] = '1'\\n\\n\" + podfile\n );\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-react-native-library",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "CLI to scaffold React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@types/validate-npm-package-name": "^3.0.3",
|
|
66
66
|
"@types/yargs": "^17.0.10"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "4646e08f940ab57f1d337a1bfaa355077caa978e"
|
|
69
69
|
}
|
|
@@ -80,7 +80,7 @@ jobs:
|
|
|
80
80
|
uses: actions/setup-java@v3
|
|
81
81
|
with:
|
|
82
82
|
distribution: 'zulu'
|
|
83
|
-
java-version: '
|
|
83
|
+
java-version: '17'
|
|
84
84
|
|
|
85
85
|
- name: Finalize Android SDK
|
|
86
86
|
if: env.turbo_cache_hit != 1
|
|
@@ -99,11 +99,13 @@ jobs:
|
|
|
99
99
|
${{ runner.os }}-gradle-
|
|
100
100
|
|
|
101
101
|
- name: Build example for Android
|
|
102
|
+
env:
|
|
103
|
+
JAVA_OPTS: "-XX:MaxHeapSize=6g"
|
|
102
104
|
run: |
|
|
103
105
|
yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}"
|
|
104
106
|
|
|
105
107
|
build-ios:
|
|
106
|
-
runs-on: macos-
|
|
108
|
+
runs-on: macos-14
|
|
107
109
|
env:
|
|
108
110
|
TURBO_CACHE_DIR: .turbo/ios
|
|
109
111
|
steps:
|
|
@@ -143,7 +145,8 @@ jobs:
|
|
|
143
145
|
- name: Install cocoapods
|
|
144
146
|
if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true'
|
|
145
147
|
run: |
|
|
146
|
-
|
|
148
|
+
cd example/ios
|
|
149
|
+
pod install
|
|
147
150
|
env:
|
|
148
151
|
NO_FLIPPER: 1
|
|
149
152
|
|
|
@@ -61,32 +61,28 @@
|
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@commitlint/config-conventional": "^17.0.2",
|
|
63
63
|
"@evilmartians/lefthook": "^1.5.0",
|
|
64
|
-
"@react-native/eslint-config": "^0.
|
|
64
|
+
"@react-native/eslint-config": "^0.73.1",
|
|
65
65
|
"@release-it/conventional-changelog": "^5.0.0",
|
|
66
|
-
"@types/jest": "^
|
|
67
|
-
"@types/react": "
|
|
68
|
-
"@types/react-native": "0.70.0",
|
|
66
|
+
"@types/jest": "^29.5.5",
|
|
67
|
+
"@types/react": "^18.2.44",
|
|
69
68
|
"commitlint": "^17.0.2",
|
|
70
|
-
"del-cli": "^5.
|
|
71
|
-
"eslint": "^8.
|
|
72
|
-
"eslint-config-prettier": "^
|
|
73
|
-
"eslint-plugin-prettier": "^
|
|
74
|
-
"jest": "^
|
|
75
|
-
|
|
76
|
-
"pod-install": "^0.1.0",
|
|
77
|
-
<% } -%>
|
|
78
|
-
"prettier": "^2.0.5",
|
|
69
|
+
"del-cli": "^5.1.0",
|
|
70
|
+
"eslint": "^8.51.0",
|
|
71
|
+
"eslint-config-prettier": "^9.0.0",
|
|
72
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
73
|
+
"jest": "^29.7.0",
|
|
74
|
+
"prettier": "^3.0.3",
|
|
79
75
|
"react": "17.0.2",
|
|
80
|
-
"react-native": "0.
|
|
76
|
+
"react-native": "0.73.0",
|
|
81
77
|
"react-native-builder-bob": "^<%- bob.version %>",
|
|
82
78
|
"release-it": "^15.0.0",
|
|
83
79
|
<% if (example === 'native') { -%>
|
|
84
80
|
"turbo": "^1.10.7",
|
|
85
81
|
<% } -%>
|
|
86
|
-
"typescript": "^5.
|
|
82
|
+
"typescript": "^5.2.2"
|
|
87
83
|
},
|
|
88
84
|
"resolutions": {
|
|
89
|
-
"@types/react": "
|
|
85
|
+
"@types/react": "^18.2.44"
|
|
90
86
|
},
|
|
91
87
|
"peerDependencies": {
|
|
92
88
|
"react": "*",
|
|
@@ -98,9 +94,6 @@
|
|
|
98
94
|
],
|
|
99
95
|
<% } -%>
|
|
100
96
|
"packageManager": "yarn@3.6.1",
|
|
101
|
-
"engines": {
|
|
102
|
-
"node": ">= 18.0.0"
|
|
103
|
-
},
|
|
104
97
|
"jest": {
|
|
105
98
|
"preset": "react-native",
|
|
106
99
|
"modulePathIgnorePatterns": [
|
|
@@ -61,7 +61,9 @@ By default, the example is configured to build with the old architecture. To run
|
|
|
61
61
|
2. For iOS, run:
|
|
62
62
|
|
|
63
63
|
```sh
|
|
64
|
-
|
|
64
|
+
cd example/ios
|
|
65
|
+
RCT_NEW_ARCH_ENABLED=1 pod install
|
|
66
|
+
cd -
|
|
65
67
|
yarn example ios
|
|
66
68
|
```
|
|
67
69
|
|
|
@@ -18,6 +18,11 @@ buildscript {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
def reactNativeArchitectures() {
|
|
22
|
+
def value = rootProject.getProperties().get("reactNativeArchitectures")
|
|
23
|
+
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
24
|
+
}
|
|
25
|
+
|
|
21
26
|
def isNewArchitectureEnabled() {
|
|
22
27
|
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
|
23
28
|
}
|
|
@@ -75,6 +80,7 @@ android {
|
|
|
75
80
|
externalNativeBuild {
|
|
76
81
|
cmake {
|
|
77
82
|
cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all"
|
|
83
|
+
abiFilters (*reactNativeArchitectures())
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
86
|
<% } -%>
|
|
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.license = package["license"]
|
|
12
12
|
s.authors = package["author"]
|
|
13
13
|
|
|
14
|
-
s.platforms = { :ios =>
|
|
14
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
15
15
|
s.source = { :git => "<%- repo -%>.git", :tag => "#{s.version}" }
|
|
16
16
|
|
|
17
17
|
<% if (project.cpp) { -%>
|
|
@@ -27,24 +27,24 @@ Pod::Spec.new do |s|
|
|
|
27
27
|
if respond_to?(:install_modules_dependencies, true)
|
|
28
28
|
install_modules_dependencies(s)
|
|
29
29
|
else
|
|
30
|
-
|
|
30
|
+
s.dependency "React-Core"
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
33
|
+
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
|
34
|
+
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
35
|
+
s.pod_target_xcconfig = {
|
|
36
|
+
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
|
37
|
+
"OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
|
|
38
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
|
39
|
+
}
|
|
40
40
|
<% if (project.view) { -%>
|
|
41
|
-
|
|
41
|
+
s.dependency "React-RCTFabric"
|
|
42
42
|
<% } -%>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
end
|
|
43
|
+
s.dependency "React-Codegen"
|
|
44
|
+
s.dependency "RCT-Folly"
|
|
45
|
+
s.dependency "RCTRequired"
|
|
46
|
+
s.dependency "RCTTypeSafety"
|
|
47
|
+
s.dependency "ReactCommon/turbomodule/core"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
50
|
end
|