Skip to content

Commit c00ed05

Browse files
authored
Revert "feat: view+module native templates" (#579)
Reverts #562
1 parent 8807954 commit c00ed05

File tree

68 files changed

+762
-638
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+762
-638
lines changed

.github/workflows/build-templates.yml

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,41 +31,57 @@ jobs:
3131
- module-legacy
3232
- module-mixed
3333
- module-new
34-
- view-module-legacy
35-
- view-module-mixed
36-
- view-module-new
34+
- view-legacy
35+
- view-mixed
36+
- view-new
3737
language:
38+
- java-objc
39+
- java-swift
3840
- kotlin-objc
39-
- cpp
41+
- kotlin-swift
4042
exclude:
41-
- type: view-module-legacy
42-
language: cpp
43-
- type: view-module-mixed
44-
language: cpp
45-
- type: view-module-new
46-
language: cpp
47-
- type: module-legacy
48-
language: kotlin-objc
49-
- type: module-mixed
43+
- os: macos-14
5044
language: kotlin-objc
45+
- os: macos-14
46+
language: kotlin-swift
47+
- type: module-new
48+
language: java-swift
5149
- type: module-new
52-
language: kotlin-objc
53-
include:
54-
- os: ubuntu-latest
55-
type: view-legacy
5650
language: kotlin-swift
57-
- os: macos-14
58-
type: view-legacy
51+
- type: module-mixed
52+
language: java-swift
53+
- type: module-mixed
5954
language: kotlin-swift
60-
- os: ubuntu-latest
61-
type: module-legacy
55+
- type: view-new
56+
language: java-swift
57+
- type: view-new
6258
language: kotlin-swift
63-
- os: macos-14
64-
type: module-legacy
59+
- type: view-mixed
60+
language: java-swift
61+
- type: view-mixed
6562
language: kotlin-swift
63+
include:
6664
- os: ubuntu-latest
6765
type: library
6866
language: js
67+
- os: ubuntu-latest
68+
type: module-legacy
69+
language: cpp
70+
- os: ubuntu-latest
71+
type: module-mixed
72+
language: cpp
73+
- os: ubuntu-latest
74+
type: module-new
75+
language: cpp
76+
- os: macos-14
77+
type: module-legacy
78+
language: cpp
79+
- os: macos-14
80+
type: module-mixed
81+
language: cpp
82+
- os: macos-14
83+
type: module-new
84+
language: cpp
6985

7086
concurrency:
7187
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os }}-${{ matrix.type }}-${{ matrix.language }}
@@ -134,13 +150,17 @@ jobs:
134150
working-directory: ${{ env.work_dir }}
135151
run: |
136152
# Build Android for only some matrices to skip redundant builds
137-
if [[ ${{ matrix.os }} == ubuntu-latest ]] && [[ ${{ matrix.language }} != js ]] ; then
153+
if [[ ${{ matrix.os }} == ubuntu-latest ]]; then
154+
if [[ ${{ matrix.type }} == view-* && ${{ matrix.language }} == *-objc ]] || [[ ${{ matrix.type }} == module-* && ${{ matrix.language }} == *-objc ]] || [[ ${{ matrix.type }} == module-* && ${{ matrix.language }} == cpp ]]; then
138155
echo "android_build=1" >> $GITHUB_ENV
156+
fi
139157
fi
140158
141159
# Build iOS for only some matrices to skip redundant builds
142-
if [[ ${{ matrix.os }} == macos-14 ]] && [[ ${{ matrix.language }} != js ]]; then
160+
if [[ ${{ matrix.os }} == macos-14 ]]; then
161+
if [[ ${{ matrix.type }} == view-* && ${{ matrix.language }} == java-* ]] || [[ ${{ matrix.type }} == module-* && ${{ matrix.language }} == java-* ]] || [[ ${{ matrix.type }} == module-* && ${{ matrix.language }} == cpp ]]; then
143162
echo "ios_build=1" >> $GITHUB_ENV
163+
fi
144164
fi
145165
146166
- name: Cache turborepo

packages/create-react-native-library/src/index.ts

Lines changed: 106 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -38,70 +38,42 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
3838
);
3939

4040
const NATIVE_FILES = {
41-
'module-legacy': path.resolve(
42-
__dirname,
43-
'../templates/native-library-legacy'
44-
),
45-
'module-new': path.resolve(__dirname, '../templates/native-library-new'),
46-
'module-mixed': path.resolve(__dirname, '../templates/native-library-mixed'),
47-
'view-legacy': path.resolve(__dirname, '../templates/native-view-legacy'),
48-
'view-module-legacy': path.resolve(
49-
__dirname,
50-
'../templates/native-view-library-legacy'
51-
),
52-
'view-module-mixed': path.resolve(
53-
__dirname,
54-
'../templates/native-view-library-mixed'
55-
),
56-
'view-module-new': path.resolve(
57-
__dirname,
58-
'../templates/native-view-library-new'
59-
),
41+
module_legacy: path.resolve(__dirname, '../templates/native-library-legacy'),
42+
module_new: path.resolve(__dirname, '../templates/native-library-new'),
43+
module_mixed: path.resolve(__dirname, '../templates/native-library-mixed'),
44+
view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),
45+
view_mixed: path.resolve(__dirname, '../templates/native-view-mixed'),
46+
view_new: path.resolve(__dirname, '../templates/native-view-new'),
47+
} as const;
48+
49+
const JAVA_FILES = {
50+
module_legacy: path.resolve(__dirname, '../templates/java-library-legacy'),
51+
module_new: path.resolve(__dirname, '../templates/java-library-new'),
52+
module_mixed: path.resolve(__dirname, '../templates/java-library-mixed'),
53+
view_legacy: path.resolve(__dirname, '../templates/java-view-legacy'),
54+
view_mixed: path.resolve(__dirname, '../templates/java-view-mixed'),
55+
view_new: path.resolve(__dirname, '../templates/java-view-new'),
6056
} as const;
6157

6258
const OBJC_FILES = {
63-
'module-legacy': path.resolve(__dirname, '../templates/objc-library'),
64-
'module-mixed': path.resolve(__dirname, '../templates/objc-library'),
65-
'module-new': path.resolve(__dirname, '../templates/objc-library'),
66-
'view-module-legacy': path.resolve(
67-
__dirname,
68-
'../templates/objc-view-library-legacy'
69-
),
70-
'view-module-mixed': path.resolve(
71-
__dirname,
72-
'../templates/objc-view-library-mixed'
73-
),
74-
'view-module-new': path.resolve(
75-
__dirname,
76-
'../templates/objc-view-library-new'
77-
),
59+
module_common: path.resolve(__dirname, '../templates/objc-library'),
60+
view_legacy: path.resolve(__dirname, '../templates/objc-view-legacy'),
61+
view_mixed: path.resolve(__dirname, '../templates/objc-view-mixed'),
62+
view_new: path.resolve(__dirname, '../templates/objc-view-new'),
7863
} as const;
7964

8065
const KOTLIN_FILES = {
81-
'module-legacy': path.resolve(
82-
__dirname,
83-
'../templates/kotlin-library-legacy'
84-
),
85-
'module-new': path.resolve(__dirname, '../templates/kotlin-library-new'),
86-
'module-mixed': path.resolve(__dirname, '../templates/kotlin-library-mixed'),
87-
'view-legacy': path.resolve(__dirname, '../templates/kotlin-view-legacy'),
88-
'view-module-legacy': path.resolve(
89-
__dirname,
90-
'../templates/kotlin-view-library-legacy'
91-
),
92-
'view-module-mixed': path.resolve(
93-
__dirname,
94-
'../templates/kotlin-view-library-mixed'
95-
),
96-
'view-module-new': path.resolve(
97-
__dirname,
98-
'../templates/kotlin-view-library-new'
99-
),
66+
module_legacy: path.resolve(__dirname, '../templates/kotlin-library-legacy'),
67+
module_new: path.resolve(__dirname, '../templates/kotlin-library-new'),
68+
module_mixed: path.resolve(__dirname, '../templates/kotlin-library-mixed'),
69+
view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),
70+
view_mixed: path.resolve(__dirname, '../templates/kotlin-view-mixed'),
71+
view_new: path.resolve(__dirname, '../templates/kotlin-view-new'),
10072
} as const;
10173

10274
const SWIFT_FILES = {
103-
'module-legacy': path.resolve(__dirname, '../templates/swift-library-legacy'),
104-
'view-legacy': path.resolve(__dirname, '../templates/swift-view-legacy'),
75+
module_legacy: path.resolve(__dirname, '../templates/swift-library-legacy'),
76+
view_legacy: path.resolve(__dirname, '../templates/swift-view-legacy'),
10577
} as const;
10678

10779
type ArgName =
@@ -117,17 +89,22 @@ type ArgName =
11789
| 'example'
11890
| 'react-native-version';
11991

120-
type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';
92+
type ProjectLanguages =
93+
| 'java-objc'
94+
| 'java-swift'
95+
| 'kotlin-objc'
96+
| 'kotlin-swift'
97+
| 'cpp'
98+
| 'js';
12199

122100
type ProjectType =
123-
| 'library'
124101
| 'module-legacy'
125-
| 'module-mixed'
126102
| 'module-new'
103+
| 'module-mixed'
104+
| 'view-mixed'
105+
| 'view-new'
127106
| 'view-legacy'
128-
| 'view-module-legacy'
129-
| 'view-module-mixed'
130-
| 'view-module-new';
107+
| 'library';
131108

132109
type Answers = {
133110
slug: string;
@@ -150,13 +127,37 @@ const LANGUAGE_CHOICES: {
150127
{
151128
title: 'Kotlin & Objective-C',
152129
value: 'kotlin-objc',
153-
types: ['view-module-legacy', 'view-module-mixed', 'view-module-new'],
130+
types: [
131+
'module-legacy',
132+
'module-new',
133+
'module-mixed',
134+
'view-mixed',
135+
'view-new',
136+
'view-legacy',
137+
],
138+
},
139+
{
140+
title: 'Java & Objective-C',
141+
value: 'java-objc',
142+
types: [
143+
'module-legacy',
144+
'module-new',
145+
'module-mixed',
146+
'view-mixed',
147+
'view-new',
148+
'view-legacy',
149+
],
154150
},
155151
{
156152
title: 'Kotlin & Swift',
157153
value: 'kotlin-swift',
158154
types: ['module-legacy', 'view-legacy'],
159155
},
156+
{
157+
title: 'Java & Swift',
158+
value: 'java-swift',
159+
types: ['module-legacy', 'view-legacy'],
160+
},
160161
{
161162
title: 'C++ for Android & iOS',
162163
value: 'cpp',
@@ -177,21 +178,6 @@ const TYPE_CHOICES: {
177178
value: ProjectType;
178179
description: string;
179180
}[] = [
180-
{
181-
title: 'Fabric view and Turbo module with backward compat',
182-
value: 'view-module-mixed',
183-
description: BACKCOMPAT_DESCRIPTION,
184-
},
185-
{
186-
title: 'Fabric view and Turbo module',
187-
value: 'view-module-new',
188-
description: NEWARCH_DESCRIPTION,
189-
},
190-
{
191-
title: 'Native module and Native view',
192-
value: 'view-module-legacy',
193-
description: 'bridge for native APIs and views to JS',
194-
},
195181
{
196182
title: 'JavaScript library',
197183
value: 'library',
@@ -217,6 +203,16 @@ const TYPE_CHOICES: {
217203
value: 'module-new',
218204
description: NEWARCH_DESCRIPTION,
219205
},
206+
{
207+
title: 'Fabric view with backward compat',
208+
value: 'view-mixed',
209+
description: BACKCOMPAT_DESCRIPTION,
210+
},
211+
{
212+
title: 'Fabric view',
213+
value: 'view-new',
214+
description: NEWARCH_DESCRIPTION,
215+
},
220216
];
221217

222218
const args: Record<ArgName, yargs.Options> = {
@@ -505,8 +501,8 @@ async function create(argv: yargs.Arguments<any>) {
505501
authorEmail,
506502
authorUrl,
507503
repoUrl,
508-
type = 'view-module-mixed',
509-
languages = type === 'library' ? 'js' : 'kotlin-objc',
504+
type = 'module-mixed',
505+
languages = type === 'library' ? 'js' : 'java-objc',
510506
example: hasExample,
511507
reactNativeVersion,
512508
} = {
@@ -573,11 +569,13 @@ async function create(argv: yargs.Arguments<any>) {
573569
version = FALLBACK_BOB_VERSION;
574570
}
575571

576-
const arch = type.endsWith('new')
577-
? 'new'
578-
: type.endsWith('mixed')
579-
? 'mixed'
580-
: 'legacy';
572+
const moduleType = type.startsWith('view-') ? 'view' : 'module';
573+
const arch =
574+
type === 'module-new' || type === 'view-new'
575+
? 'new'
576+
: type === 'module-mixed' || type === 'view-mixed'
577+
? 'mixed'
578+
: 'legacy';
581579

582580
const example =
583581
hasExample && !local ? (type === 'library' ? 'expo' : 'native') : 'none';
@@ -620,9 +618,10 @@ async function create(argv: yargs.Arguments<any>) {
620618
native: languages !== 'js',
621619
arch,
622620
cpp: languages === 'cpp',
623-
swift: languages === 'kotlin-swift',
624-
view: type.includes('view'),
625-
module: type.includes('module'),
621+
kotlin: languages === 'kotlin-objc' || languages === 'kotlin-swift',
622+
swift: languages === 'java-swift' || languages === 'kotlin-swift',
623+
view: moduleType === 'view',
624+
module: moduleType === 'module',
626625
},
627626
author: {
628627
name: authorName,
@@ -706,7 +705,7 @@ async function create(argv: yargs.Arguments<any>) {
706705
}
707706
}
708707

709-
if (type === 'library') {
708+
if (languages === 'js') {
710709
await copyDir(JS_FILES, folder);
711710
await copyDir(EXPO_FILES, folder);
712711
} else {
@@ -723,18 +722,29 @@ async function create(argv: yargs.Arguments<any>) {
723722
await copyDir(NATIVE_COMMON_EXAMPLE_FILES, folder);
724723
}
725724

726-
await copyDir(NATIVE_FILES[type], folder);
725+
if (moduleType === 'module') {
726+
await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);
727+
} else {
728+
await copyDir(NATIVE_FILES[`${moduleType}_${arch}`], folder);
729+
}
727730

728-
if (
729-
type === 'view-legacy' ||
730-
(type === 'module-legacy' && options.project.swift)
731-
) {
732-
await copyDir(SWIFT_FILES[type], folder);
731+
if (options.project.swift) {
732+
await copyDir(SWIFT_FILES[`${moduleType}_legacy`], folder);
733733
} else {
734-
await copyDir(OBJC_FILES[type], folder);
734+
if (moduleType === 'module') {
735+
await copyDir(OBJC_FILES[`${moduleType}_common`], folder);
736+
} else {
737+
await copyDir(OBJC_FILES[`view_${arch}`], folder);
738+
}
735739
}
736740

737-
await copyDir(KOTLIN_FILES[type], folder);
741+
const templateType = `${moduleType}_${arch}` as const;
742+
743+
if (options.project.kotlin) {
744+
await copyDir(KOTLIN_FILES[templateType], folder);
745+
} else {
746+
await copyDir(JAVA_FILES[templateType], folder);
747+
}
738748

739749
if (options.project.cpp) {
740750
await copyDir(CPP_FILES, folder);

0 commit comments

Comments
 (0)