create-expo-stack 2.1.25 → 2.2.1
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/build/commands/create-expo-stack.js +25 -7
- package/build/templates/base/App.tsx.ejs +44 -44
- package/build/templates/base/package.json.ejs +11 -0
- package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +1 -0
- package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +33 -33
- package/build/templates/packages/firebase/.env +8 -0
- package/build/templates/packages/firebase/metro.config.js +6 -0
- package/build/templates/packages/firebase/utils/firebase.ts.ejs +26 -0
- package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +2 -1
- package/build/templates/packages/supabase/.env +2 -0
- package/build/templates/packages/supabase/utils/supabase.ts.ejs +15 -0
- package/build/types/types.d.ts +2 -2
- package/build/types/utilities/configureProjectFiles.d.ts +1 -1
- package/build/types/utilities/generateProjectFiles.d.ts +1 -1
- package/build/types.js +6 -4
- package/build/utilities/configureProjectFiles.js +19 -2
- package/build/utilities/generateProjectFiles.js +13 -5
- package/build/utilities/printOutput.js +43 -9
- package/build/utilities/runCLI.js +25 -5
- package/build/utilities/showHelp.js +21 -4
- package/package.json +1 -1
- package/readme.md +3 -1
|
@@ -44,7 +44,7 @@ var command = {
|
|
|
44
44
|
name: 'create-expo-stack',
|
|
45
45
|
description: 'Create a new Expo project',
|
|
46
46
|
run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
-
var _a, first, options, _b, info, highlight, warning, cliResults, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, packages, navigationPackage, stylingPackage, files, formattedFiles, error_1;
|
|
47
|
+
var _a, first, options, _b, info, highlight, warning, cliResults, useDefault, skipCLI, useBlankTypescript, optionsPassedIn, packages, authenticationPackage, navigationPackage, stylingPackage, files, formattedFiles, error_1;
|
|
48
48
|
return __generator(this, function (_c) {
|
|
49
49
|
switch (_c.label) {
|
|
50
50
|
case 0:
|
|
@@ -100,8 +100,8 @@ var command = {
|
|
|
100
100
|
cliResults = _c.sent();
|
|
101
101
|
_c.label = 7;
|
|
102
102
|
case 7:
|
|
103
|
-
//
|
|
104
|
-
//
|
|
103
|
+
// Update the cliResults with the options passed in via the command
|
|
104
|
+
// Navigation packages
|
|
105
105
|
if (options.reactNavigation ||
|
|
106
106
|
options['react-navigation'] ||
|
|
107
107
|
options.reactnavigation) {
|
|
@@ -126,6 +126,7 @@ var command = {
|
|
|
126
126
|
},
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
+
// Styling packages
|
|
129
130
|
if (options.nativewind) {
|
|
130
131
|
// Add nativewind package
|
|
131
132
|
cliResults.packages.push({
|
|
@@ -147,20 +148,37 @@ var command = {
|
|
|
147
148
|
type: 'styling',
|
|
148
149
|
});
|
|
149
150
|
}
|
|
151
|
+
// Authentication packages
|
|
152
|
+
if (options.supabase) {
|
|
153
|
+
// Add supabase package
|
|
154
|
+
cliResults.packages.push({
|
|
155
|
+
name: 'supabase',
|
|
156
|
+
type: 'authentication',
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (options.firebase) {
|
|
160
|
+
// Add firebase package
|
|
161
|
+
cliResults.packages.push({
|
|
162
|
+
name: 'firebase',
|
|
163
|
+
type: 'authentication',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
150
166
|
// Destructure the results but set the projectName if the first param is passed in
|
|
151
167
|
if (first) {
|
|
152
168
|
cliResults.projectName = first;
|
|
153
169
|
}
|
|
154
170
|
// By this point, all cliResults should be set
|
|
155
|
-
info('
|
|
171
|
+
info('');
|
|
172
|
+
highlight('Your project configuration:');
|
|
156
173
|
info(util.inspect(cliResults, false, null, true /* enable colors */));
|
|
157
174
|
packages = cliResults.packages;
|
|
175
|
+
authenticationPackage = packages.find(function (p) { return p.type === 'authentication'; }) || undefined;
|
|
158
176
|
navigationPackage = packages.find(function (p) { return p.type === 'navigation'; }) || undefined;
|
|
159
177
|
stylingPackage = packages.find(function (p) { return p.type === 'styling'; });
|
|
160
178
|
files = [];
|
|
161
|
-
files = (0, utilities_1.configureProjectFiles)(files, navigationPackage, stylingPackage, toolbox);
|
|
179
|
+
files = (0, utilities_1.configureProjectFiles)(authenticationPackage, files, navigationPackage, stylingPackage, toolbox);
|
|
162
180
|
formattedFiles = [];
|
|
163
|
-
formattedFiles = (0, utilities_1.generateProjectFiles)(cliResults, files, formattedFiles, navigationPackage,
|
|
181
|
+
formattedFiles = (0, utilities_1.generateProjectFiles)(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, stylingPackage, toolbox);
|
|
164
182
|
return [4 /*yield*/, (0, utilities_1.printOutput)(cliResults, formattedFiles, toolbox)];
|
|
165
183
|
case 8:
|
|
166
184
|
_c.sent();
|
|
@@ -180,4 +198,4 @@ var command = {
|
|
|
180
198
|
}); },
|
|
181
199
|
};
|
|
182
200
|
exports.default = command;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFNUIsMENBUXFCO0FBQ3JCLDBDQUE2QztBQUM3QyxrQ0FBd0Q7QUFFeEQsSUFBTSxPQUFPLEdBQW1CO0lBQy9CLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLDJCQUEyQjtJQUN4QyxHQUFHLEVBQUUsVUFBTyxPQUFPOzs7OztvQkFFakIsS0FFRyxPQUFPLFdBRm9CLEVBQWhCLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUM1QixLQUNHLE9BQU8sTUFEeUIsRUFBMUIsSUFBSSxVQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBLENBQ3ZCO29CQUNYLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO3dCQUM5QixJQUFBLG9CQUFRLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTt3QkFFbEMsc0JBQU07cUJBQ047Ozs7b0JBRUEsMklBQTJJO29CQUMzSSxJQUNDLE9BQU8sQ0FBQyxJQUFJO3dCQUNaLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3hCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO3dCQUM1QixDQUFDLE9BQU8sQ0FBQyxlQUFlO3dCQUN4QixDQUFDLE9BQU8sQ0FBQyxVQUFVO3dCQUNuQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7d0JBQ3ZCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFDbEI7d0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDZCxrR0FBa0csQ0FDbEcsQ0FBQTtxQkFDRDtvQkFFRCxxQkFBTSxJQUFB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
|
|
@@ -1,64 +1,64 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
4
|
-
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
5
|
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import { View } from 'react-native';
|
|
7
|
+
import { TamaguiProvider, Text, styled } from 'tamagui';
|
|
8
|
+
import config from './tamagui.config'
|
|
9
9
|
<% } else {%>
|
|
10
|
-
|
|
10
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
11
11
|
<% } %>
|
|
12
12
|
|
|
13
13
|
import { StatusBar } from 'expo-status-bar';
|
|
14
14
|
|
|
15
15
|
<% if (props.stylingPackage?.name === "nativewind") {%>
|
|
16
16
|
export default function App() {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
return (
|
|
18
|
+
<View className={styles.container} %>>
|
|
19
19
|
<Text>Open up App.tsx to start working on your app!</Text>
|
|
20
20
|
<StatusBar style="auto" />
|
|
21
|
-
</View>
|
|
21
|
+
</View >
|
|
22
22
|
);
|
|
23
|
-
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const styles = {
|
|
26
|
+
container: 'flex flex-1 items-center justify-center bg-white',
|
|
27
|
+
};
|
|
28
28
|
<% } else if (props.stylingPackage?.name === "tamagui") {%>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const MyView = styled(View, {
|
|
30
|
+
name: "MyView",
|
|
31
|
+
flex: 1,
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
justifyContent: 'center',
|
|
34
|
+
});
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
export default function App() {
|
|
37
|
+
return (
|
|
38
|
+
<TamaguiProvider config={config}>
|
|
39
|
+
<MyView %>>
|
|
40
|
+
<Text>Open up App.tsx to start working on your app!</Text>
|
|
41
|
+
<StatusBar style="auto" />
|
|
42
|
+
</MyView>
|
|
43
|
+
</TamaguiProvider >
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
46
|
<% } else {%>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
export default function App() {
|
|
48
|
+
return (
|
|
49
|
+
<View style={styles.container}>
|
|
50
|
+
<Text>Open up App.tsx to start working on your app!</Text>
|
|
51
|
+
<StatusBar style="auto" />
|
|
52
|
+
</View >
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
const styles = StyleSheet.create({
|
|
57
|
+
container: {
|
|
58
|
+
flex: 1,
|
|
59
|
+
backgroundColor: '#fff',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'center',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
64
|
<% } %>
|
|
@@ -51,6 +51,17 @@
|
|
|
51
51
|
"react-native-web": "~0.19.6",
|
|
52
52
|
<% } %>
|
|
53
53
|
|
|
54
|
+
<% if (props.authenticationPackage?.name === "supabase") { %>
|
|
55
|
+
"@react-native-async-storage/async-storage": "1.18.2",
|
|
56
|
+
"@supabase/supabase-js": "^2.38.4",
|
|
57
|
+
"react-native-url-polyfill": "^2.0.0",
|
|
58
|
+
<% } %>
|
|
59
|
+
|
|
60
|
+
<% if (props.authenticationPackage?.name === "firebase") { %>
|
|
61
|
+
"firebase": "^10.5.2",
|
|
62
|
+
"react-native-url-polyfill": "^2.0.0",
|
|
63
|
+
<% } %>
|
|
64
|
+
|
|
54
65
|
"expo": "~49.0.11",
|
|
55
66
|
"expo-status-bar": "~1.6.0",
|
|
56
67
|
"react": "18.2.0",
|
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
import { Stack } from "expo-router";
|
|
2
2
|
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import React, { useEffect } from "react";
|
|
4
|
+
import { TamaguiProvider } from 'tamagui'
|
|
5
|
+
import { SplashScreen, Stack } from "expo-router";
|
|
6
|
+
import { useFonts } from "expo-font";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import config from '../tamagui.config'
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
SplashScreen.preventAutoHideAsync();
|
|
11
11
|
<% } else { %>
|
|
12
|
-
|
|
12
|
+
import { Stack } from "expo-router";
|
|
13
13
|
<% } %>
|
|
14
14
|
|
|
15
15
|
export const unstable_settings = {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
// Ensure that reloading on `/modal` keeps a back button present.
|
|
17
|
+
initialRouteName: "(tabs)",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export default function RootLayout() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
22
|
+
const [loaded] = useFonts({
|
|
23
|
+
Inter: require("@tamagui/font-inter/otf/Inter-Medium.otf"),
|
|
24
|
+
InterBold: require("@tamagui/font-inter/otf/Inter-Bold.otf")
|
|
25
|
+
});
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (loaded) {
|
|
29
|
+
SplashScreen.hideAsync();
|
|
30
|
+
}
|
|
31
|
+
}, [loaded]);
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
if (!loaded) return null;
|
|
34
|
+
<% } %>
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
return (
|
|
37
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
38
|
+
<TamaguiProvider config={config}>
|
|
39
|
+
<% } %>
|
|
40
|
+
<Stack>
|
|
41
|
+
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
|
42
|
+
<Stack.Screen name="modal" options={{ presentation: "modal" }} />
|
|
43
|
+
</Stack>
|
|
44
|
+
<% if (props.stylingPackage?.name === "tamagui") { %>
|
|
45
|
+
</TamaguiProvider>
|
|
46
|
+
<% } %>
|
|
47
|
+
);
|
|
48
48
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
EXPO_PUBLIC_FIREBASE_API_KEY=api_key
|
|
2
|
+
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=project-id.firebaseapp.com
|
|
3
|
+
EXPO_PUBLIC_DATABASE_URL=https://project-id.firebaseio.com
|
|
4
|
+
EXPO_PUBLIC_PROJECT_ID=project-id
|
|
5
|
+
EXPO_PUBLIC_STORAGE_BUCKET=project-id.appspot.com
|
|
6
|
+
EXPO_PUBLIC_MESSAGING_SENDER_ID=sender-id
|
|
7
|
+
EXPO_PUBLIC_APP_ID=app-id
|
|
8
|
+
EXPO_PUBLIC_MEASUREMENT_ID=G-measurement-id
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { initializeApp } from 'firebase/app';
|
|
2
|
+
|
|
3
|
+
// Optionally import the services that you want to use
|
|
4
|
+
// import {...} from "firebase/auth";
|
|
5
|
+
// import {...} from "firebase/database";
|
|
6
|
+
// import {...} from "firebase/firestore";
|
|
7
|
+
// import {...} from "firebase/functions";
|
|
8
|
+
// import {...} from "firebase/storage";
|
|
9
|
+
|
|
10
|
+
// Initialize Firebase
|
|
11
|
+
const firebaseConfig = {
|
|
12
|
+
apiKey: process.env.EXPO_PUBLIC_FIREBASE_API_KEY,
|
|
13
|
+
authDomain: process.env.EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
|
14
|
+
databaseURL: process.env.EXPO_PUBLIC_FIREBASE_DATABASE_URL,
|
|
15
|
+
projectId: process.env.EXPO_PUBLIC_PROJECT_ID,
|
|
16
|
+
storageBucket: process.env.EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET,
|
|
17
|
+
messagingSenderId: process.env.EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
|
|
18
|
+
appId: process.env.EXPO_PUBLIC_FIREBASE_APP_ID,
|
|
19
|
+
measurementId: process.env.EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const firebase = initializeApp(firebaseConfig);
|
|
23
|
+
// For more information on how to access Firebase in your project,
|
|
24
|
+
// see the Firebase documentation: https://firebase.google.com/docs/web/setup#access-firebase
|
|
25
|
+
|
|
26
|
+
export default firebase;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import 'react-native-url-polyfill/auto';
|
|
2
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
3
|
+
import { createClient } from '@supabase/supabase-js';
|
|
4
|
+
|
|
5
|
+
const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL;
|
|
6
|
+
const supabaseAnonKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
|
|
7
|
+
|
|
8
|
+
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
|
|
9
|
+
auth: {
|
|
10
|
+
storage: AsyncStorage,
|
|
11
|
+
autoRefreshToken: true,
|
|
12
|
+
persistSession: true,
|
|
13
|
+
detectSessionInUrl: false,
|
|
14
|
+
},
|
|
15
|
+
});
|
package/build/types/types.d.ts
CHANGED
|
@@ -3,11 +3,11 @@ export interface CliFlags {
|
|
|
3
3
|
noInstall: boolean;
|
|
4
4
|
importAlias: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const availablePackages: readonly ["
|
|
6
|
+
export declare const availablePackages: readonly ["expo-router", "expoRouter", "firebase", "nativewind", "react-navigation", "reactNavigation", "reactnavigation", "supabase", "stylesheet", "tamagui"];
|
|
7
7
|
export type NavigationTypes = 'stack' | 'tabs' | undefined;
|
|
8
8
|
export type AvailablePackages = {
|
|
9
9
|
name: (typeof availablePackages)[number];
|
|
10
|
-
type: 'navigation' | 'styling';
|
|
10
|
+
type: 'navigation' | 'styling' | 'authentication';
|
|
11
11
|
options?: {
|
|
12
12
|
type?: NavigationTypes;
|
|
13
13
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Toolbox } from 'gluegun/build/types/domain/toolbox';
|
|
2
2
|
import { AvailablePackages } from '../types';
|
|
3
|
-
export declare function configureProjectFiles(files: string[], navigationPackage: AvailablePackages | undefined, stylingPackage: AvailablePackages | undefined, toolbox: Toolbox): string[];
|
|
3
|
+
export declare function configureProjectFiles(authenticationPackage: AvailablePackages | undefined, files: string[], navigationPackage: AvailablePackages | undefined, stylingPackage: AvailablePackages | undefined, toolbox: Toolbox): string[];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Toolbox } from 'gluegun/build/types/domain/toolbox';
|
|
2
2
|
import { AvailablePackages, CliResults } from '../types';
|
|
3
|
-
export declare function generateProjectFiles(cliResults: CliResults, files: string[], formattedFiles: any[], navigationPackage: AvailablePackages,
|
|
3
|
+
export declare function generateProjectFiles(authenticationPackage: AvailablePackages, cliResults: CliResults, files: string[], formattedFiles: any[], navigationPackage: AvailablePackages, stylingPackage: AvailablePackages, toolbox: Toolbox): any[];
|
package/build/types.js
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.availablePackages = void 0;
|
|
4
4
|
exports.availablePackages = [
|
|
5
|
+
'expo-router',
|
|
6
|
+
'expoRouter',
|
|
7
|
+
'firebase',
|
|
5
8
|
'nativewind',
|
|
6
|
-
'tamagui',
|
|
7
9
|
'react-navigation',
|
|
8
10
|
'reactNavigation',
|
|
9
11
|
'reactnavigation',
|
|
10
|
-
'
|
|
11
|
-
'expoRouter',
|
|
12
|
+
'supabase',
|
|
12
13
|
'stylesheet',
|
|
14
|
+
'tamagui',
|
|
13
15
|
];
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT2EsUUFBQSxpQkFBaUIsR0FBRztJQUNoQyxhQUFhO0lBQ2IsWUFBWTtJQUNaLFVBQVU7SUFDVixZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLFlBQVk7SUFDWixTQUFTO0NBQ0EsQ0FBQSJ9
|
|
@@ -11,7 +11,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.configureProjectFiles = void 0;
|
|
13
13
|
var getPackageManager_1 = require("./getPackageManager");
|
|
14
|
-
function configureProjectFiles(files, navigationPackage, stylingPackage, toolbox) {
|
|
14
|
+
function configureProjectFiles(authenticationPackage, files, navigationPackage, stylingPackage, toolbox) {
|
|
15
15
|
// Define the files common to all templates to be generated
|
|
16
16
|
var baseFiles = [
|
|
17
17
|
'base/assets/adaptive-icon.png',
|
|
@@ -105,7 +105,24 @@ function configureProjectFiles(files, navigationPackage, stylingPackage, toolbox
|
|
|
105
105
|
files = files.filter(function (file) { return file !== 'base/App.tsx.ejs'; });
|
|
106
106
|
files = __spreadArray(__spreadArray([], files, true), expoRouterFiles, true);
|
|
107
107
|
}
|
|
108
|
+
// add supabase files if needed
|
|
109
|
+
if ((authenticationPackage === null || authenticationPackage === void 0 ? void 0 : authenticationPackage.name) === 'supabase') {
|
|
110
|
+
var supabaseFiles = [
|
|
111
|
+
'packages/supabase/utils/supabase.ts.ejs',
|
|
112
|
+
'packages/supabase/.env',
|
|
113
|
+
];
|
|
114
|
+
files = __spreadArray(__spreadArray([], files, true), supabaseFiles, true);
|
|
115
|
+
}
|
|
116
|
+
// add supabase files if needed
|
|
117
|
+
if ((authenticationPackage === null || authenticationPackage === void 0 ? void 0 : authenticationPackage.name) === 'firebase') {
|
|
118
|
+
var firebaseFiles = [
|
|
119
|
+
'packages/firebase/utils/firebase.ts.ejs',
|
|
120
|
+
'packages/firebase/metro.config.js',
|
|
121
|
+
'packages/firebase/.env',
|
|
122
|
+
];
|
|
123
|
+
files = __spreadArray(__spreadArray([], files, true), firebaseFiles, true);
|
|
124
|
+
}
|
|
108
125
|
return files;
|
|
109
126
|
}
|
|
110
127
|
exports.configureProjectFiles = configureProjectFiles;
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlUHJvamVjdEZpbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9jb25maWd1cmVQcm9qZWN0RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEseURBQXVEO0FBRXZELFNBQWdCLHFCQUFxQixDQUNwQyxxQkFBb0QsRUFDcEQsS0FBZSxFQUNmLGlCQUFnRCxFQUNoRCxjQUE2QyxFQUM3QyxPQUFnQjtJQUVoQiwyREFBMkQ7SUFDM0QsSUFBTSxTQUFTLEdBQUc7UUFDakIsK0JBQStCO1FBQy9CLHlCQUF5QjtRQUN6QixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQix1QkFBdUI7UUFDdkIscUJBQXFCO0tBQ3JCLENBQUE7SUFFRCxJQUFNLGNBQWMsR0FBRyxJQUFBLHFDQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2pELHVEQUF1RDtJQUN2RCxJQUFJLGNBQWMsS0FBSyxNQUFNLElBQUksQ0FBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxJQUFJLE1BQUssYUFBYSxFQUFFO1FBQzNFLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtLQUNqQztJQUVELEtBQUsscUJBQU8sU0FBUyxPQUFDLENBQUE7SUFFdEIsaUNBQWlDO0lBQ2pDLG1EQUFtRDtJQUNuRCxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksTUFBSyxZQUFZLEVBQUU7UUFDMUMsSUFBTSxlQUFlLEdBQUc7WUFDdkIsNENBQTRDO1lBQzVDLDhCQUE4QjtTQUM5QixDQUFBO1FBRUQsS0FBSyxtQ0FBTyxLQUFLLFNBQUssZUFBZSxPQUFDLENBQUE7S0FDdEM7SUFFRCw4QkFBOEI7SUFDOUIsZ0RBQWdEO0lBQ2hELElBQUksQ0FB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
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateProjectFiles = void 0;
|
|
4
|
-
function generateProjectFiles(cliResults, files, formattedFiles, navigationPackage,
|
|
4
|
+
function generateProjectFiles(authenticationPackage, cliResults, files, formattedFiles, navigationPackage, stylingPackage, toolbox) {
|
|
5
5
|
var projectName = cliResults.projectName, packages = cliResults.packages, flags = cliResults.flags;
|
|
6
6
|
return files.reduce(function (prev, file) {
|
|
7
7
|
var template = file;
|
|
8
|
-
var target = "".concat(projectName, "/") + file.replace('.ejs', '')
|
|
8
|
+
var target = "".concat(projectName, "/") + file.replace('.ejs', '');
|
|
9
|
+
if ((authenticationPackage === null || authenticationPackage === void 0 ? void 0 : authenticationPackage.name) === 'supabase') {
|
|
10
|
+
target = target.replace('packages/supabase/', '');
|
|
11
|
+
}
|
|
12
|
+
if ((authenticationPackage === null || authenticationPackage === void 0 ? void 0 : authenticationPackage.name) === 'firebase') {
|
|
13
|
+
target = target.replace('packages/firebase/', '');
|
|
14
|
+
}
|
|
15
|
+
target = target.replace('base/', '');
|
|
9
16
|
if ((stylingPackage === null || stylingPackage === void 0 ? void 0 : stylingPackage.name) === 'tamagui') {
|
|
10
17
|
target = target.replace('packages/tamagui/', '');
|
|
11
18
|
}
|
|
@@ -29,15 +36,16 @@ function generateProjectFiles(cliResults, files, formattedFiles, navigationPacka
|
|
|
29
36
|
template: template,
|
|
30
37
|
target: './' + target,
|
|
31
38
|
props: {
|
|
39
|
+
authenticationPackage: authenticationPackage,
|
|
40
|
+
flags: flags,
|
|
41
|
+
navigationPackage: navigationPackage,
|
|
32
42
|
projectName: projectName,
|
|
33
43
|
packages: packages,
|
|
34
|
-
flags: flags,
|
|
35
44
|
stylingPackage: stylingPackage,
|
|
36
|
-
navigationPackage: navigationPackage,
|
|
37
45
|
},
|
|
38
46
|
});
|
|
39
47
|
return prev.concat([gen]);
|
|
40
48
|
}, formattedFiles);
|
|
41
49
|
}
|
|
42
50
|
exports.generateProjectFiles = generateProjectFiles;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQcm9qZWN0RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL2dlbmVyYXRlUHJvamVjdEZpbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLFNBQWdCLG9CQUFvQixDQUNuQyxxQkFBd0MsRUFDeEMsVUFBc0IsRUFDdEIsS0FBZSxFQUNmLGNBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxjQUFpQyxFQUNqQyxPQUFnQjtJQUVSLElBQUEsV0FBVyxHQUFzQixVQUFVLFlBQWhDLEVBQUUsUUFBUSxHQUFZLFVBQVUsU0FBdEIsRUFBRSxLQUFLLEdBQUssVUFBVSxNQUFmLENBQWU7SUFFbkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQUMsSUFBSSxFQUFFLElBQUk7UUFDOUIsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLElBQUksTUFBTSxHQUFHLFVBQUcsV0FBVyxNQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFBLHFCQUFxQixhQUFyQixxQkFBcUIsdUJBQXJCLHFCQUFxQixDQUFFLElBQUksTUFBSyxVQUFVLEVBQUU7WUFDL0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDakQ7UUFFRCxJQUFJLENBQUEscUJBQXFCLGFBQXJCLHFCQUFxQix1QkFBckIscUJBQXFCLENBQUUsSUFBSSxNQUFLLFVBQVUsRUFBRTtZQUMvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUNqRDtRQUVELE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksTUFBSyxTQUFTLEVBQUU7WUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDaEQ7YUFBTSxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksTUFBSyxZQUFZLEVBQUU7WUFDakQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDbkQ7UUFFRCxJQUFJLENBQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxNQUFLLGtCQUFrQixFQUFFO1lBQ25ELE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1lBQ3ZFLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzdEO1FBRUQsSUFBSSxDQUFBLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLElBQUksTUFBSyxhQUFhLEVBQUU7WUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDcEQsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDL0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQ3JDO1lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQ3BDO1NBQ0Q7UUFFRCxJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxRQUFRLFVBQUE7WUFDUixNQUFNLEVBQUUsSUFBSSxHQUFHLE1BQU07WUFDckIsS0FBSyxFQUFFO2dCQUNOLHFCQUFxQix1QkFBQTtnQkFDckIsS0FBSyxPQUFBO2dCQUNMLGlCQUFpQixtQkFBQTtnQkFDakIsV0FBVyxhQUFBO2dCQUNYLFFBQVEsVUFBQTtnQkFDUixjQUFjLGdCQUFBO2FBQ2Q7U0FDRCxDQUFDLENBQUE7UUFFRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzFCLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQTtBQUNuQixDQUFDO0FBN0RELG9EQTZEQyJ9
|
|
@@ -40,15 +40,15 @@ exports.printOutput = void 0;
|
|
|
40
40
|
var getPackageManager_1 = require("./getPackageManager");
|
|
41
41
|
function printOutput(cliResults, formattedFiles, toolbox) {
|
|
42
42
|
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
var options, _a, info, success, system, projectName, flags, packageManager;
|
|
43
|
+
var options, _a, info, success, highlight, system, projectName, flags, packageManager;
|
|
44
44
|
return __generator(this, function (_b) {
|
|
45
45
|
switch (_b.label) {
|
|
46
46
|
case 0:
|
|
47
|
-
options = toolbox.parameters.options, _a = toolbox.print, info = _a.info, success = _a.success, system = toolbox.system;
|
|
47
|
+
options = toolbox.parameters.options, _a = toolbox.print, info = _a.info, success = _a.success, highlight = _a.highlight, system = toolbox.system;
|
|
48
48
|
projectName = cliResults.projectName, flags = cliResults.flags;
|
|
49
49
|
// Output the results to the user
|
|
50
50
|
info("");
|
|
51
|
-
|
|
51
|
+
highlight("Initializing your project...");
|
|
52
52
|
return [4 /*yield*/, Promise.all(formattedFiles)
|
|
53
53
|
// check if npm option is set, otherwise set based on what the system is configure to use
|
|
54
54
|
];
|
|
@@ -57,7 +57,7 @@ function printOutput(cliResults, formattedFiles, toolbox) {
|
|
|
57
57
|
packageManager = (0, getPackageManager_1.getPackageManager)(toolbox);
|
|
58
58
|
if (!(!options.noInstall && !flags.noInstall)) return [3 /*break*/, 3];
|
|
59
59
|
info("");
|
|
60
|
-
|
|
60
|
+
highlight("Installing dependencies using ".concat(packageManager, "..."));
|
|
61
61
|
info("");
|
|
62
62
|
// install with yarn or npm i
|
|
63
63
|
return [4 /*yield*/, system.spawn("cd ".concat(projectName, " && ").concat(packageManager, " install --silent"), {
|
|
@@ -70,7 +70,7 @@ function printOutput(cliResults, formattedFiles, toolbox) {
|
|
|
70
70
|
_b.label = 3;
|
|
71
71
|
case 3:
|
|
72
72
|
info("");
|
|
73
|
-
|
|
73
|
+
highlight("Cleaning up your project...");
|
|
74
74
|
// format the files
|
|
75
75
|
return [4 /*yield*/, system.spawn("cd ".concat(projectName, " && ").concat(packageManager, " run format"), {
|
|
76
76
|
shell: true,
|
|
@@ -81,7 +81,7 @@ function printOutput(cliResults, formattedFiles, toolbox) {
|
|
|
81
81
|
_b.sent();
|
|
82
82
|
if (!(!options.noGit && !flags.noGit)) return [3 /*break*/, 6];
|
|
83
83
|
info("");
|
|
84
|
-
|
|
84
|
+
highlight("Initializing git...");
|
|
85
85
|
info("");
|
|
86
86
|
// initialize git repo and add first commit
|
|
87
87
|
return [4 /*yield*/, system.spawn("cd ".concat(projectName, " && git init --quiet && git add . && git commit -m \"Initial commit\" -m \"Generated by create-expo-stack 2.0.0.\" --quiet"), {
|
|
@@ -93,8 +93,42 @@ function printOutput(cliResults, formattedFiles, toolbox) {
|
|
|
93
93
|
_b.sent();
|
|
94
94
|
_b.label = 6;
|
|
95
95
|
case 6:
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
// check if packages includes package with name "supabase"
|
|
97
|
+
if (cliResults.packages.some(function (pkg) { return pkg.name === 'supabase'; })) {
|
|
98
|
+
success("Success! \uD83C\uDF89 Now, here's what's next:");
|
|
99
|
+
info("");
|
|
100
|
+
highlight('Head over to https://database.new to create a new Supabase project.');
|
|
101
|
+
info("");
|
|
102
|
+
highlight("Get the Project URL and anon key from the API settings:");
|
|
103
|
+
info("1. Go to the API settings page in the Dashboard.");
|
|
104
|
+
info("2. Find your Project URL, anon, and service_role keys on this page.");
|
|
105
|
+
info("3. Copy these keys and paste them into your .env file.");
|
|
106
|
+
info("4. Optionally, follow one of these guides to get started with Supabase:");
|
|
107
|
+
highlight("https://docs.expo.dev/guides/using-supabase/#next-steps");
|
|
108
|
+
info("");
|
|
109
|
+
success("Once you're done, run the following to get started: ");
|
|
110
|
+
info("");
|
|
111
|
+
}
|
|
112
|
+
else if (cliResults.packages.some(function (pkg) { return pkg.name === 'firebase'; })) {
|
|
113
|
+
success("Success! \uD83C\uDF89 Now, here's what's next:");
|
|
114
|
+
info("");
|
|
115
|
+
highlight('Head over to https://console.firebase.google.com/ to create a new Firebase project.');
|
|
116
|
+
info("");
|
|
117
|
+
highlight("Get the API key and other unique identifiers:");
|
|
118
|
+
info("1. Register a web app in your Firebase project:");
|
|
119
|
+
highlight("https://firebase.google.com/docs/web/setup#register-app");
|
|
120
|
+
info("2. Find your API key and other identifiers.");
|
|
121
|
+
info("3. Copy these keys and paste them into your .env file.");
|
|
122
|
+
info("4. Optionally, follow one of these guides to get started with Firebase:");
|
|
123
|
+
highlight("https://docs.expo.dev/guides/using-firebase/#next-steps");
|
|
124
|
+
info("");
|
|
125
|
+
success("Once you're done, run the following to get started: ");
|
|
126
|
+
info("");
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
success('Success! 🎉 Now, just run the following to get started: ');
|
|
130
|
+
info("");
|
|
131
|
+
}
|
|
98
132
|
info("cd ".concat(projectName));
|
|
99
133
|
if (packageManager === 'npm') {
|
|
100
134
|
if (options.noInstall)
|
|
@@ -123,4 +157,4 @@ function printOutput(cliResults, formattedFiles, toolbox) {
|
|
|
123
157
|
});
|
|
124
158
|
}
|
|
125
159
|
exports.printOutput = printOutput;
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL3ByaW50T3V0cHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHlEQUF1RDtBQUd2RCxTQUFzQixXQUFXLENBQ2hDLFVBQXNCLEVBQ3RCLGNBQXFCLEVBQ3JCLE9BQWdCOzs7Ozs7b0JBR0QsT0FBTyxHQUdsQixPQUFPLG1CQUhXLEVBQ3JCLEtBRUcsT0FBTyxNQUZ5QixFQUExQixJQUFJLFVBQUEsRUFBRSxPQUFPLGFBQUEsRUFBRSxTQUFTLGVBQUEsRUFDakMsTUFBTSxHQUNILE9BQU8sT0FESixDQUNJO29CQUVILFdBQVcsR0FBWSxVQUFVLFlBQXRCLEVBQUUsS0FBSyxHQUFLLFVBQVUsTUFBZixDQUFlO29CQUV6QyxpQ0FBaUM7b0JBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDUixTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQTtvQkFFekMscUJBQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7d0JBRWpDLHlGQUF5RjtzQkFGeEQ7O29CQUFqQyxTQUFpQyxDQUFBO29CQUczQixjQUFjLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQTt5QkFFN0MsQ0FBQSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBLEVBQXRDLHdCQUFzQztvQkFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUNSLFNBQVMsQ0FBQyx3Q0FBaUMsY0FBYyxRQUFLLENBQUMsQ0FBQTtvQkFDL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUVSLDZCQUE2QjtvQkFDN0IscUJBQU0sTUFBTSxDQUFDLEtBQUssQ0FDakIsYUFBTSxXQUFXLGlCQUFPLGNBQWMsc0JBQW1CLEVBQ3pEOzRCQUNDLEtBQUssRUFBRSxJQUFJOzRCQUNYLEtBQUssRUFBRSxTQUFTO3lCQUNoQixDQUNELEVBQUE7O29CQVBELDZCQUE2QjtvQkFDN0IsU0FNQyxDQUFBOzs7b0JBR0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUNSLFNBQVMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO29CQUV4QyxtQkFBbUI7b0JBQ25CLHFCQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBTSxXQUFXLGlCQUFPLGNBQWMsZ0JBQWEsRUFBRTs0QkFDdkUsS0FBSyxFQUFFLElBQUk7NEJBQ1gsS0FBSyxFQUFFLFNBQVM7eUJBQ2hCLENBQUMsRUFBQTs7b0JBSkYsbUJBQW1CO29CQUNuQixTQUdFLENBQUE7eUJBRUUsQ0FBQSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBLEVBQTlCLHdCQUE4QjtvQkFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO29CQUNSLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO29CQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBRVIsMkNBQTJDO29CQUMzQyxxQkFBTSxNQUFNLENBQUMsS0FBSyxDQUNqQixhQUFNLFdBQVcsK0hBQXdILEVBQ3pJOzRCQUNDLEtBQUssRUFBRSxJQUFJOzRCQUNYLEtBQUssRUFBRSxTQUFTO3lCQUNoQixDQUNELEVBQUE7O29CQVBELDJDQUEyQztvQkFDM0MsU0FNQyxDQUFBOzs7b0JBSUYsMERBQTBEO29CQUMxRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQXZCLENBQXVCLENBQUMsRUFBRTt3QkFDL0QsT0FBTyxDQUFDLGdEQUFzQyxDQUFDLENBQUE7d0JBQy9DLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDUixTQUFTLENBQUMscUVBQXFFLENBQUMsQ0FBQTt3QkFDaEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO3dCQUNSLFNBQVMsQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO3dCQUNwRSxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQTt3QkFDeEQsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUE7d0JBQzNFLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFBO3dCQUM5RCxJQUFJLENBQUMseUVBQXlFLENBQUMsQ0FBQTt3QkFDL0UsU0FBUyxDQUFDLHlEQUF5RCxDQUFDLENBQUE7d0JBQ3BFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDUixPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQTt3QkFDL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO3FCQUNSO3lCQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBdkIsQ0FBdUIsQ0FBQyxFQUFFO3dCQUN0RSxPQUFPLENBQUMsZ0RBQXNDLENBQUMsQ0FBQTt3QkFDL0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO3dCQUNSLFNBQVMsQ0FBQyxxRkFBcUYsQ0FBQyxDQUFBO3dCQUNoRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQ1IsU0FBUyxDQUFDLCtDQUErQyxDQUFDLENBQUE7d0JBQzFELElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO3dCQUN2RCxTQUFTLENBQUMseURBQXlELENBQUMsQ0FBQTt3QkFDcEUsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUE7d0JBQ25ELElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFBO3dCQUM5RCxJQUFJLENBQUMseUVBQXlFLENBQUMsQ0FBQTt3QkFDL0UsU0FBUyxDQUFDLHlEQUF5RCxDQUFDLENBQUE7d0JBQ3BFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDUixPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQTt3QkFDL0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO3FCQUNSO3lCQUFNO3dCQUNOLE9BQU8sQ0FBQywwREFBMEQsQ0FBQyxDQUFBO3dCQUNuRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7cUJBQ1I7b0JBQ0QsSUFBSSxDQUFDLGFBQU0sV0FBVyxDQUFFLENBQUMsQ0FBQTtvQkFDekIsSUFBSSxjQUFjLEtBQUssS0FBSyxFQUFFO3dCQUM3QixJQUFJLE9BQU8sQ0FBQyxTQUFTOzRCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTt3QkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO3FCQUNuQjt5QkFBTSxJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUU7d0JBQ3JDLElBQUksT0FBTyxDQUFDLFNBQVM7NEJBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO3dCQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7cUJBQ3BCO3lCQUFNLElBQUksY0FBYyxLQUFLLEtBQUssRUFBRTt3QkFDcEMsSUFBSSxPQUFPLENBQUMsU0FBUzs0QkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7d0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtxQkFDbkI7eUJBQU07d0JBQ04sSUFBSSxPQUFPLENBQUMsU0FBUzs0QkFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7d0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtxQkFDaEI7b0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBOzs7OztDQUNSO0FBL0dELGtDQStHQyJ9
|
|
@@ -40,7 +40,7 @@ exports.runCLI = void 0;
|
|
|
40
40
|
var constants_1 = require("../constants");
|
|
41
41
|
function runCLI(toolbox) {
|
|
42
42
|
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
-
var first, success, _a, ask, confirm, cliResults, askName, name_1, useTypescript, askNavigation, askNavigationType, navigationSelect, navigationTypeSelect, askStyling, stylingSelect;
|
|
43
|
+
var first, success, _a, ask, confirm, cliResults, askName, name_1, useTypescript, askNavigation, askNavigationType, navigationSelect, navigationTypeSelect, askStyling, stylingSelect, askAuthentication, authenticationSelect;
|
|
44
44
|
return __generator(this, function (_b) {
|
|
45
45
|
switch (_b.label) {
|
|
46
46
|
case 0:
|
|
@@ -119,26 +119,46 @@ function runCLI(toolbox) {
|
|
|
119
119
|
type: 'select',
|
|
120
120
|
name: 'stylingSelect',
|
|
121
121
|
message: 'What would you like to use for styling?',
|
|
122
|
-
choices: ['
|
|
122
|
+
choices: ['Tamagui', 'Nativewind', 'Stylesheet'],
|
|
123
123
|
};
|
|
124
124
|
return [4 /*yield*/, ask(askStyling)];
|
|
125
125
|
case 9:
|
|
126
126
|
stylingSelect = (_b.sent()).stylingSelect;
|
|
127
|
-
if (stylingSelect === '
|
|
127
|
+
if (stylingSelect === 'Nativewind') {
|
|
128
128
|
cliResults.packages.push({ name: 'nativewind', type: 'styling' });
|
|
129
129
|
success("You'll be styling with ease using Tailwind.");
|
|
130
130
|
}
|
|
131
|
-
else if (stylingSelect === '
|
|
131
|
+
else if (stylingSelect === 'Tamagui') {
|
|
132
132
|
cliResults.packages.push({ name: 'tamagui', type: 'styling' });
|
|
133
133
|
}
|
|
134
134
|
else {
|
|
135
135
|
cliResults.packages.push({ name: 'stylesheet', type: 'styling' });
|
|
136
136
|
success("Cool, you're using the default StyleSheet that comes with React Native.");
|
|
137
137
|
}
|
|
138
|
+
askAuthentication = {
|
|
139
|
+
type: 'select',
|
|
140
|
+
name: 'authenticationSelect',
|
|
141
|
+
message: 'What would you like to use for authentication?',
|
|
142
|
+
choices: ['None', 'Supabase', 'Firebase'],
|
|
143
|
+
};
|
|
144
|
+
return [4 /*yield*/, ask(askAuthentication)];
|
|
145
|
+
case 10:
|
|
146
|
+
authenticationSelect = (_b.sent()).authenticationSelect;
|
|
147
|
+
if (authenticationSelect === 'Supabase') {
|
|
148
|
+
cliResults.packages.push({ name: 'supabase', type: 'authentication' });
|
|
149
|
+
success("You'll be using Supabase for authentication.");
|
|
150
|
+
}
|
|
151
|
+
else if (authenticationSelect === 'Firebase') {
|
|
152
|
+
cliResults.packages.push({ name: 'firebase', type: 'authentication' });
|
|
153
|
+
success("You'll be using Firebase for authentication.");
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
success("No problem, skipping authentication for now.");
|
|
157
|
+
}
|
|
138
158
|
return [2 /*return*/, cliResults];
|
|
139
159
|
}
|
|
140
160
|
});
|
|
141
161
|
});
|
|
142
162
|
}
|
|
143
163
|
exports.runCLI = runCLI;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsMENBQStEO0FBRy9ELFNBQXNCLE1BQU0sQ0FBQyxPQUFnQjs7Ozs7O29CQUU3QixLQUFLLEdBR2hCLE9BQU8saUJBSFMsRUFDVixPQUFPLEdBRWIsT0FBTyxjQUZNLEVBQ2hCLEtBQ0csT0FBTyxPQURjLEVBQWQsR0FBRyxTQUFBLEVBQUUsT0FBTyxhQUFBLENBQ1o7b0JBR0wsVUFBVSxHQUFHLDBCQUFjLENBQUE7eUJBRzdCLEtBQUssRUFBTCx3QkFBSztvQkFDUixVQUFVLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTs7O29CQUV4QixPQUFPLEdBQUc7d0JBQ2YsSUFBSSxFQUFFLE9BQU87d0JBQ2IsSUFBSSxFQUFFLE1BQU07d0JBQ1osT0FBTyxFQUFFLGtEQUEyQyw0QkFBZ0IsTUFBRztxQkFDdkUsQ0FBQTtvQkFDZ0IscUJBQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFBOztvQkFBM0IsU0FBUyxDQUFBLFNBQWtCLENBQUEsS0FBdkI7b0JBQ1osVUFBVSxDQUFDLFdBQVcsR0FBRyxNQUFJLElBQUksNEJBQWdCLENBQUE7OztvQkFHbEQseUJBQXlCO29CQUN6QixVQUFVLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtvQkFFRixxQkFBTSxPQUFPLENBQ2xDLHFEQUFxRCxFQUNyRCxJQUFJLENBQ0osRUFBQTs7b0JBSEssYUFBYSxHQUFHLFNBR3JCO29CQUVELElBQUksYUFBYSxFQUFFO3dCQUNsQixPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQTtxQkFDOUM7eUJBQU07d0JBQ04sT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7cUJBQ3BEO29CQUdLLGFBQWEsR0FBRzt3QkFDckIsSUFBSSxFQUFFLFFBQVE7d0JB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
|
|
@@ -17,19 +17,36 @@ function showHelp(info, highlight, warning) {
|
|
|
17
17
|
info(' --npm Use npm as the package manager');
|
|
18
18
|
info(' --yarn Use yarn as the package manager');
|
|
19
19
|
info(' --pnpm Use pnpm as the package manager');
|
|
20
|
-
info('
|
|
20
|
+
info(' --bun Use bun as the package manager');
|
|
21
21
|
info(' -v, --version Version number');
|
|
22
22
|
info(' -h, --help Usage info');
|
|
23
23
|
info('');
|
|
24
|
-
highlight('
|
|
24
|
+
highlight(' Navigation Package Options');
|
|
25
|
+
info(' --exporouter Use Expo Router for navigation');
|
|
26
|
+
info(' --reactnavigation Use React Navigation for navigation');
|
|
27
|
+
info(' --tabs Use tabs for navigation');
|
|
28
|
+
info('');
|
|
29
|
+
highlight(' Authentication Package Options');
|
|
30
|
+
info(' --firebase Use Firebase for authentication');
|
|
31
|
+
info(' --supabase Use Supabase for authentication');
|
|
32
|
+
info('');
|
|
33
|
+
highlight(' Styling Package Options');
|
|
34
|
+
info(' --nativewind Use Nativewind for styling');
|
|
35
|
+
info(' --tamagui Use Tamagui for styling');
|
|
36
|
+
info(' --stylesheet Use StyleSheet for styling');
|
|
37
|
+
info('');
|
|
38
|
+
highlight(' Opinionated Stacks');
|
|
39
|
+
info(' -i, --ignite Use Ignite to create an opinionated stack');
|
|
40
|
+
info('');
|
|
41
|
+
highlight(' Non-Interactive Usage');
|
|
25
42
|
info(' If you know the options you want to use, you can pass them in via the');
|
|
26
43
|
info(' command line. This will skip the interactive CLI and use the options');
|
|
27
44
|
info(' you pass in. This is also useful for CI/CD environments.');
|
|
28
45
|
info('');
|
|
29
46
|
info(' For example:');
|
|
30
47
|
info(' ');
|
|
31
|
-
warning(' $ npx create-expo-stack myProject --
|
|
48
|
+
warning(' $ npx create-expo-stack myProject --reactnavigation --nativewind --noInstall');
|
|
32
49
|
info('');
|
|
33
50
|
}
|
|
34
51
|
exports.showHelp = showHelp;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd0hlbHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL3Nob3dIZWxwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU87SUFDaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ25CLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO0lBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNSLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQixPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQTtJQUMvRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDUixTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDdEIsSUFBSSxDQUNILDBFQUEwRSxDQUMxRSxDQUFBO0lBQ0QsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUE7SUFDM0UsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUE7SUFDcEUsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUE7SUFDbkUsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUE7SUFDaEUsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDakUsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDakUsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7SUFDaEQsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7SUFDaEQsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsU0FBUyxDQUFDLCtCQUErQixDQUFDLENBQUE7SUFDMUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUE7SUFDN0QsSUFBSSxDQUFDLDREQUE0RCxDQUFDLENBQUE7SUFDbEUsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUE7SUFDOUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUE7SUFDOUQsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUE7SUFDOUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsU0FBUyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDdkMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDdEQsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUE7SUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFDbEMsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUE7SUFDM0UsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRVIsU0FBUyxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFDckMsSUFBSSxDQUNILDJFQUEyRSxDQUMzRSxDQUFBO0lBQ0QsSUFBSSxDQUNILDBFQUEwRSxDQUMxRSxDQUFBO0lBQ0QsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUE7SUFDcEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsT0FBTyxDQUNOLGtGQUFrRixDQUNsRixDQUFBO0lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ1QsQ0FBQztBQXZERCw0QkF1REMifQ==
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Description
|
|
6
6
|
|
|
7
|
-
This CLI tool is designed to help you get started with React Native and Expo as quickly as possible. The CLI options allow you to configure your project with Typescript, file-based routing with Expo Router, configuration-based navigation via React-Navigation,
|
|
7
|
+
This CLI tool is designed to help you get started with React Native and Expo as quickly as possible. The CLI options allow you to configure your project with Typescript, file-based routing with Expo Router, configuration-based navigation via React-Navigation, styling with StyleSheets, Tamagui, or NativeWind, and authentication via Supabase or Firebase.
|
|
8
8
|
|
|
9
9
|
You can also use flags such as `--noInstall`, `--noGit`, and `--default` in order to customize your project. The CLI will attempt to automatically determine your package manager of choice but you can also pass in your preferred package manager via `--npm`, `--yarn`, `--pnpm`, or `--bun`. Roadmap coming soon...
|
|
10
10
|
|
|
@@ -40,6 +40,8 @@ Each project is generated based on the results of the CLI, on a per-file basis.
|
|
|
40
40
|
| Tamagui | UI Framework | v1 | Universal UI with a smart optimizing compiler |
|
|
41
41
|
| Safe Area Context | Safe Area Library | v4 | Safe area support |
|
|
42
42
|
| React Native Web | Web Support | v0.19 | React Native for Web |
|
|
43
|
+
| Firebase | Backend and Auth | v10 | Cloud-hosted NoSQL database from Google |
|
|
44
|
+
| Supabase | Backend and Auth | v2 | Open source Firebase alternative |
|
|
43
45
|
|
|
44
46
|
## Reporting Bugs & Feedback
|
|
45
47
|
|