create-expo-stack 0.1.4 → 2.0.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.
@@ -35,118 +35,299 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
38
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
+ var gluegun_1 = require("gluegun");
49
+ var DEFAULT_APP_NAME = "my-expo-app";
50
+ var availablePackages = ["nativewind", "react-navigation", "expo-router"];
51
+ var defaultOptions = {
52
+ projectName: DEFAULT_APP_NAME,
53
+ packages: [
54
+ {
55
+ name: "nativewind",
56
+ type: "styling",
57
+ options: {}
58
+ },
59
+ {
60
+ name: "expo-router",
61
+ type: "navigation",
62
+ options: {
63
+ navigationType: "stack"
64
+ }
65
+ }
66
+ ],
67
+ flags: {
68
+ noGit: false,
69
+ noInstall: false,
70
+ importAlias: "~/",
71
+ },
72
+ };
39
73
  var command = {
40
74
  name: 'create-expo-stack',
41
- description: 'Create an expo app, the right way.',
75
+ description: 'A CLI to create a new Expo project with the stack of your choice.',
42
76
  run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
43
- var print, parameters, system, prompt, projectName, useExpoRouter, useReactNavigation, navigation, navigationType, branch, askName, name_1, useTypescript, askNavigation, askNavigationType, navigationSelect, navigationTypeSelect, useNativewind, githubRepo, error_1;
44
- return __generator(this, function (_a) {
45
- switch (_a.label) {
77
+ function runCLI() {
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var cliResults, askName, name_1, useTypescript, askNavigation, askNavigationType, navigationSelect, navigationTypeSelect, useNativewind;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0:
83
+ cliResults = defaultOptions;
84
+ // Set the app name if it was passed in via the initial command
85
+ if (parameters.first) {
86
+ cliResults.projectName = parameters.first;
87
+ }
88
+ if (!!parameters.first) return [3 /*break*/, 2];
89
+ askName = {
90
+ type: 'input',
91
+ name: 'name',
92
+ message: 'What do you want to name your project? (my-expo-app)',
93
+ };
94
+ return [4 /*yield*/, ask(askName)];
95
+ case 1:
96
+ name_1 = (_a.sent()).name;
97
+ cliResults.projectName = name_1;
98
+ _a.label = 2;
99
+ case 2:
100
+ // Clear packages
101
+ cliResults.packages = [];
102
+ return [4 /*yield*/, confirm('Would you like to use TypeScript with this project?', true)];
103
+ case 3:
104
+ useTypescript = _a.sent();
105
+ if (useTypescript) {
106
+ success('Good call, now using TypeScript! 🚀');
107
+ }
108
+ else {
109
+ success("Wrong answer, we're gonna use Typescript.");
110
+ }
111
+ askNavigation = {
112
+ type: 'select',
113
+ name: 'navigationSelect',
114
+ message: 'What would you like to use for Navigation?',
115
+ choices: ['React Navigation', 'Expo Router', 'None'],
116
+ };
117
+ askNavigationType = {
118
+ type: 'select',
119
+ name: 'navigationTypeSelect',
120
+ message: 'What type of navigation would you like to use?',
121
+ choices: ['Stack', 'Tabs'],
122
+ };
123
+ return [4 /*yield*/, ask(askNavigation)];
124
+ case 4:
125
+ navigationSelect = (_a.sent()).navigationSelect;
126
+ if (!(navigationSelect !== 'None')) return [3 /*break*/, 6];
127
+ return [4 /*yield*/, ask(askNavigationType)];
128
+ case 5:
129
+ navigationTypeSelect = (_a.sent()).navigationTypeSelect;
130
+ if (navigationSelect === 'React Navigation') {
131
+ cliResults.packages.push({ name: "react-navigation", type: 'navigation', options: navigationTypeSelect.toLowerCase() });
132
+ }
133
+ else {
134
+ cliResults.packages.push({ name: "expo-router", type: 'navigation', options: navigationTypeSelect.toLowerCase() });
135
+ }
136
+ success("Great, we'll use ".concat(navigationSelect, "!"));
137
+ return [3 /*break*/, 7];
138
+ case 6:
139
+ success("No problem, skipping navigation for now.");
140
+ _a.label = 7;
141
+ case 7: return [4 /*yield*/, confirm('Would you like to use NativeWind (Tailwind for RN) with this project?', true)];
142
+ case 8:
143
+ useNativewind = _a.sent();
144
+ if (useNativewind) {
145
+ cliResults.packages.push({ name: "nativewind", type: 'styling', options: {} });
146
+ success("You'll be styling with ease using Tailwind.");
147
+ }
148
+ else {
149
+ success("Sounds good, you can use StyleSheet instead.");
150
+ }
151
+ return [2 /*return*/, cliResults];
152
+ }
153
+ });
154
+ });
155
+ }
156
+ function usePackage(packageName, packages) {
157
+ return packages.find(function (p) { return p.name === packageName; }) ? true : false;
158
+ }
159
+ var parameters, generate, _a, info, success, _b, ask, confirm, _c, projectName_1, packages_1, flags_1, useNativewind_1, navigationPackage_1, baseFiles, files, nativewindFiles, reactNavigationFiles, expoRouterFiles, formattedFiles, yarnOrNpm, error_1;
160
+ return __generator(this, function (_d) {
161
+ switch (_d.label) {
46
162
  case 0:
47
- print = toolbox.print, parameters = toolbox.parameters, system = toolbox.system, prompt = toolbox.prompt;
48
- projectName = parameters.first;
49
- useExpoRouter = false;
50
- useReactNavigation = false;
51
- navigation = '';
52
- navigationType = '';
53
- branch = 'blank';
54
- _a.label = 1;
163
+ parameters = toolbox.parameters, generate = toolbox.template.generate, _a = toolbox.print, info = _a.info, success = _a.success, _b = toolbox.prompt, ask = _b.ask, confirm = _b.confirm;
164
+ _d.label = 1;
55
165
  case 1:
56
- _a.trys.push([1, 11, , 12]);
57
- if (!!projectName) return [3 /*break*/, 3];
58
- askName = {
59
- type: 'input',
60
- name: 'name',
61
- message: 'What do you want to name your project? (my-expo-app)',
62
- };
63
- return [4 /*yield*/, prompt.ask(askName)];
166
+ _d.trys.push([1, 6, , 7]);
167
+ return [4 /*yield*/, runCLI()];
64
168
  case 2:
65
- name_1 = (_a.sent()).name;
66
- projectName = name_1;
67
- _a.label = 3;
68
- case 3: return [4 /*yield*/, prompt.confirm('Would you like to use TypeScript with this project?', true)];
69
- case 4:
70
- useTypescript = _a.sent();
71
- if (useTypescript) {
72
- print.success('Good call, now using TypeScript! 🚀');
169
+ _c = _d.sent(), projectName_1 = _c.projectName, packages_1 = _c.packages, flags_1 = _c.flags;
170
+ useNativewind_1 = usePackage("nativewind", packages_1);
171
+ navigationPackage_1 = packages_1.find(function (p) { return p.type === "navigation"; }) || undefined;
172
+ baseFiles = [
173
+ 'base/assets/adaptive-icon.png',
174
+ 'base/assets/favicon.png',
175
+ 'base/assets/icon.png',
176
+ 'base/assets/splash.png',
177
+ 'base/tsconfig.json.ejs',
178
+ 'base/app.json.ejs',
179
+ 'base/App.tsx.ejs',
180
+ 'base/babel.config.js.ejs',
181
+ 'base/package.json.ejs',
182
+ 'base/.gitignore.ejs',
183
+ ];
184
+ files = __spreadArray([], baseFiles, true);
185
+ // add nativewind files if needed
186
+ // modify base files with nativewind specifications
187
+ if (useNativewind_1) {
188
+ nativewindFiles = [
189
+ 'packages/nativewind/tailwind.config.js.ejs',
190
+ 'packages/nativewind/app.d.ts',
191
+ ];
192
+ files = __spreadArray(__spreadArray([], files, true), nativewindFiles, true);
73
193
  }
74
- else {
75
- print.success("Wrong answer, we're gonna use Typescript.");
194
+ ;
195
+ // add react navigation files if needed
196
+ // modify base files with react navigation specifications
197
+ if ((navigationPackage_1 === null || navigationPackage_1 === void 0 ? void 0 : navigationPackage_1.name) === "react-navigation") {
198
+ reactNavigationFiles = [
199
+ 'packages/react-navigation/App.tsx.ejs',
200
+ 'packages/react-navigation/navigation/index.tsx.ejs',
201
+ ];
202
+ // if it's a stack, add the stack files) {
203
+ if (navigationPackage_1.options === "stack") {
204
+ reactNavigationFiles = __spreadArray(__spreadArray([], reactNavigationFiles, true), [
205
+ 'packages/react-navigation/screens/details.tsx.ejs',
206
+ 'packages/react-navigation/screens/overview.tsx.ejs',
207
+ ], false);
208
+ }
209
+ else {
210
+ // it's a tab navigator
211
+ reactNavigationFiles = __spreadArray(__spreadArray([], reactNavigationFiles, true), [
212
+ 'packages/react-navigation/components/edit-screen-info.tsx.ejs',
213
+ 'packages/react-navigation/navigation/tab-navigator.tsx.ejs',
214
+ 'packages/react-navigation/screens/modal.tsx.ejs',
215
+ 'packages/react-navigation/screens/one.tsx.ejs',
216
+ 'packages/react-navigation/screens/two.tsx.ejs',
217
+ ], false);
218
+ }
219
+ // Remove the base App.tsx.ejs file since we'll be using the one from react-navigation
220
+ files = files.filter(function (file) { return file !== 'base/App.tsx.ejs'; });
221
+ files = __spreadArray(__spreadArray([], files, true), reactNavigationFiles, true);
76
222
  }
77
- askNavigation = {
78
- type: 'select',
79
- name: 'navigationSelect',
80
- message: 'What would you like to use for Navigation?',
81
- choices: ['React Navigation', 'Expo Router', 'None'],
82
- };
83
- askNavigationType = {
84
- type: 'select',
85
- name: 'navigationTypeSelect',
86
- message: 'What type of navigation would you like to use?',
87
- choices: ['Stack', 'Tab'],
88
- };
89
- return [4 /*yield*/, prompt.ask(askNavigation)];
223
+ // add expo router files if needed
224
+ // modify base files with expo router specifications
225
+ if ((navigationPackage_1 === null || navigationPackage_1 === void 0 ? void 0 : navigationPackage_1.name) === "expo-router") {
226
+ expoRouterFiles = [
227
+ 'packages/expo-router/expo-env.d.ts',
228
+ 'packages/expo-router/metro.config.js',
229
+ 'packages/expo-router/index.ts'
230
+ ];
231
+ // if it's a stack, add the stack files) {
232
+ if (navigationPackage_1.options === "stack") {
233
+ expoRouterFiles = __spreadArray(__spreadArray([], expoRouterFiles, true), [
234
+ 'packages/expo-router/stack/app/_layout.tsx.ejs',
235
+ 'packages/expo-router/stack/app/details.tsx.ejs',
236
+ 'packages/expo-router/stack/app/index.tsx.ejs',
237
+ ], false);
238
+ }
239
+ else {
240
+ // it's a tab navigator
241
+ expoRouterFiles = __spreadArray(__spreadArray([], expoRouterFiles, true), [
242
+ 'packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs',
243
+ 'packages/expo-router/tabs/app/(tabs)/index.tsx.ejs',
244
+ 'packages/expo-router/tabs/app/(tabs)/two.tsx.ejs',
245
+ 'packages/expo-router/tabs/app/_layout.tsx.ejs',
246
+ 'packages/expo-router/tabs/app/modal.tsx.ejs',
247
+ 'packages/expo-router/tabs/components/edit-screen-info.tsx.ejs',
248
+ ], false);
249
+ }
250
+ // Remove the base App.tsx.ejs file since we'll be using index.tsx from expo-router
251
+ files = files.filter(function (file) { return file !== 'base/App.tsx.ejs'; });
252
+ files = __spreadArray(__spreadArray([], files, true), expoRouterFiles, true);
253
+ }
254
+ formattedFiles = [];
255
+ formattedFiles = files.reduce(function (prev, file) {
256
+ var template = file;
257
+ var target = "".concat(projectName_1, "/") + file.replace('.ejs', '').replace('base/', '');
258
+ if (useNativewind_1) {
259
+ target = target.replace('packages/nativewind/', '');
260
+ }
261
+ if ((navigationPackage_1 === null || navigationPackage_1 === void 0 ? void 0 : navigationPackage_1.name) === "react-navigation") {
262
+ target = target.replace('packages/react-navigation/App.tsx', 'App.tsx');
263
+ target = target.replace('packages/react-navigation/', 'src/');
264
+ }
265
+ if ((navigationPackage_1 === null || navigationPackage_1 === void 0 ? void 0 : navigationPackage_1.name) === "expo-router") {
266
+ target = target.replace('packages/expo-router/', '');
267
+ if (navigationPackage_1.options === "stack") {
268
+ target = target.replace('stack/', '');
269
+ }
270
+ if (navigationPackage_1.options === "tabs") {
271
+ target = target.replace('tabs/', '');
272
+ }
273
+ }
274
+ var gen = generate({
275
+ template: template,
276
+ target: target,
277
+ props: {
278
+ projectName: projectName_1,
279
+ packages: packages_1,
280
+ flags: flags_1,
281
+ useNativewind: useNativewind_1,
282
+ navigationPackage: navigationPackage_1,
283
+ },
284
+ });
285
+ return prev.concat([gen]);
286
+ }, formattedFiles);
287
+ info("");
288
+ info("Initializing your project...");
289
+ info("");
290
+ return [4 /*yield*/, Promise.all(formattedFiles)];
291
+ case 3:
292
+ _d.sent();
293
+ info("");
294
+ info("Installing dependencies...");
295
+ info("");
296
+ yarnOrNpm = gluegun_1.system.which('yarn') ? 'yarn' : 'npm';
297
+ return [4 /*yield*/, gluegun_1.system.spawn("cd ".concat(projectName_1, " && ").concat(yarnOrNpm, " install --silent && ").concat(yarnOrNpm, " run --quiet format"), {
298
+ shell: true,
299
+ stdio: 'inherit',
300
+ })];
301
+ case 4:
302
+ _d.sent();
303
+ info("");
304
+ info("Initializing git...");
305
+ info("");
306
+ // initialize git repo and add first commit
307
+ return [4 /*yield*/, gluegun_1.system.spawn("cd ".concat(projectName_1, " && git init --quiet && git add . && git commit -m \"Initial commit\" -m \"Generated by create-expo-stack 2.0.0.\" --quiet"), {
308
+ shell: true,
309
+ stdio: 'inherit',
310
+ })];
90
311
  case 5:
91
- navigationSelect = (_a.sent()).navigationSelect;
92
- if (!(navigationSelect !== 'None')) return [3 /*break*/, 7];
93
- return [4 /*yield*/, prompt.ask(askNavigationType)];
312
+ // initialize git repo and add first commit
313
+ _d.sent();
314
+ success('Success! 🎉 Now, just run the following to get started: ');
315
+ info("");
316
+ info("cd ".concat(projectName_1));
317
+ info('yarn ios');
318
+ info("");
319
+ return [3 /*break*/, 7];
94
320
  case 6:
95
- navigationTypeSelect = (_a.sent()).navigationTypeSelect;
96
- navigationType = navigationTypeSelect.toLowerCase();
97
- if (navigationSelect === 'React Navigation') {
98
- useReactNavigation = true;
99
- navigation = 'react-navigation';
100
- }
101
- else {
102
- useExpoRouter = true;
103
- navigation = 'expo-router';
104
- }
105
- print.success("Great, we'll use ".concat(navigationSelect, "!"));
106
- return [3 /*break*/, 8];
107
- case 7:
108
- print.success("No problem, skipping navigation for now.");
109
- _a.label = 8;
110
- case 8: return [4 /*yield*/, prompt.confirm('Would you like to use NativeWind (Tailwind for RN) with this project?', true)];
111
- case 9:
112
- useNativewind = _a.sent();
113
- if (useNativewind) {
114
- print.success("You'll be styling with ease using Tailwind.");
115
- }
116
- else {
117
- print.success("Sounds good, you can use StyleSheet instead.");
118
- }
119
- githubRepo = 'https://github.com/danstepanov/create-expo-stack.git';
120
- if (!useExpoRouter && !useReactNavigation && !useNativewind) {
121
- branch = 'base';
122
- }
123
- else if (!useExpoRouter && !useReactNavigation && useNativewind) {
124
- branch = 'with-typescript-nativewind';
125
- }
126
- else if (useNativewind) {
127
- branch = "with-typescript-".concat(navigation, "-").concat(navigationType, "-nativewind");
128
- }
129
- else {
130
- branch = "with-typescript-".concat(navigation, "-").concat(navigationType);
131
- }
132
- print.info("Initializing your project...");
133
- return [4 /*yield*/, system.run("git clone --single-branch --branch ".concat(branch, " ").concat(githubRepo, " ").concat(projectName, " && cd ").concat(projectName, " && git branch -m ").concat(branch, " main && git remote remove origin"))];
134
- case 10:
135
- _a.sent();
136
- print.success('Success! 🎉 Now, just run the following to get started: ');
137
- print.info("cd ".concat(projectName));
138
- print.info('yarn');
139
- print.info('yarn ios');
140
- return [3 /*break*/, 12];
141
- case 11:
142
- error_1 = _a.sent();
143
- print.error("Oops, unable to create your project \uD83D\uDE22");
144
- print.info("\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback");
145
- return [3 /*break*/, 12];
146
- case 12: return [2 /*return*/];
321
+ error_1 = _d.sent();
322
+ // TODO: delete all files
323
+ info("Oops, something went wrong while creating your project \uD83D\uDE22");
324
+ console.error(error_1);
325
+ info("\nIf this was unexpected, please open an issue: https://github.com/danstepanov/create-expo-stack#reporting-bugs--feedback");
326
+ return [3 /*break*/, 7];
327
+ case 7: return [2 /*return*/];
147
328
  }
148
329
  });
149
330
  }); },
150
331
  };
151
- module.exports = command;
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixXQUFXLEVBQUUsb0NBQW9DO0lBQ2pELEdBQUcsRUFBRSxVQUFPLE9BQU87Ozs7O29CQUNULEtBQUssR0FBaUMsT0FBTyxNQUF4QyxFQUFFLFVBQVUsR0FBcUIsT0FBTyxXQUE1QixFQUFFLE1BQU0sR0FBYSxPQUFPLE9BQXBCLEVBQUUsTUFBTSxHQUFLLE9BQU8sT0FBWixDQUFZO29CQUVqRCxXQUFXLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtvQkFDOUIsYUFBYSxHQUFHLEtBQUssQ0FBQTtvQkFDckIsa0JBQWtCLEdBQUcsS0FBSyxDQUFBO29CQUMxQixVQUFVLEdBQUcsRUFBRSxDQUFBO29CQUNmLGNBQWMsR0FBRyxFQUFFLENBQUE7b0JBQ25CLE1BQU0sR0FBRyxPQUFPLENBQUE7Ozs7eUJBR2QsQ0FBQyxXQUFXLEVBQVosd0JBQVk7b0JBQ1IsT0FBTyxHQUFHO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxNQUFNO3dCQUNaLE9BQU8sRUFBRSxzREFBc0Q7cUJBQ2hFLENBQUE7b0JBQ2dCLHFCQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUE7O29CQUFsQyxTQUFTLENBQUEsU0FBeUIsQ0FBQSxLQUE5QjtvQkFDWixXQUFXLEdBQUcsTUFBSSxDQUFBOzt3QkFJRSxxQkFBTSxNQUFNLENBQUMsT0FBTyxDQUN4QyxxREFBcUQsRUFDckQsSUFBSSxDQUNMLEVBQUE7O29CQUhLLGFBQWEsR0FBRyxTQUdyQjtvQkFFRCxJQUFJLGFBQWEsRUFBRTt3QkFDakIs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
332
+ exports.default = command;
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWV4cG8tc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLWV4cG8tc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBZ0Q7QUFFaEQsSUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFRdkMsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQVUsQ0FBQztBQWdCckYsSUFBTSxjQUFjLEdBQWU7SUFDakMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixRQUFRLEVBQUU7UUFDUjtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsT0FBTyxFQUFFLEVBQUU7U0FDWjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxPQUFPO2FBQ3hCO1NBQ0Y7S0FDRjtJQUNELEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxLQUFLO1FBQ1osU0FBUyxFQUFFLEtBQUs7UUFDaEIsV0FBVyxFQUFFLElBQUk7S0FDbEI7Q0FDRixDQUFDO0FBRUYsSUFBTSxPQUFPLEdBQW1CO0lBQzlCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixHQUFHLEVBQUUsVUFBTyxPQUFPO1FBUWpCLFNBQWUsTUFBTTs7Ozs7OzRCQUdmLFVBQVUsR0FBRyxjQUFjLENBQUM7NEJBRWhDLCtEQUErRDs0QkFDL0QsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO2dDQUNwQixVQUFVLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7NkJBQzNDO2lDQUdHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBakIsd0JBQWlCOzRCQUNi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
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("expo-router/entry");
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3BhY2thZ2VzL2V4cG8tcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTJCIn0=
@@ -1 +1,3 @@
1
- export {};
1
+ import { GluegunCommand } from 'gluegun';
2
+ declare const command: GluegunCommand;
3
+ export default command;
@@ -0,0 +1 @@
1
+ import "expo-router/entry";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-expo-stack",
3
- "version": "0.1.4",
3
+ "version": "2.0.0",
4
4
  "description": "create-expo-stack CLI",
5
5
  "private": false,
6
6
  "types": "build/types/types.d.ts",
@@ -15,9 +15,10 @@
15
15
  "clean-build": "rm -rf ./build",
16
16
  "compile": "tsc -p .",
17
17
  "copy-templates": "copyfiles ./src/templates/* ./build/templates",
18
- "build": "yarn clean-build && yarn compile && yarn copy-templates",
18
+ "build": "yarn clean-build && yarn compile && yarn copy-templates && yarn lint-templates",
19
19
  "prepublishOnly": "yarn build",
20
20
  "format": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix && prettier \"**/*.{js,jsx,ts,tsx,json}\" --write",
21
+ "lint-templates": "ejslint ./src/templates",
21
22
  "test": "jest",
22
23
  "watch": "jest --watch",
23
24
  "snapupdate": "jest --updateSnapshot",
@@ -32,6 +33,7 @@
32
33
  ],
33
34
  "license": "MIT",
34
35
  "dependencies": {
36
+ "ejs-lint": "^2.0.0",
35
37
  "gluegun": "latest"
36
38
  },
37
39
  "devDependencies": {
package/readme.md CHANGED
@@ -77,6 +77,15 @@ Thanks go to these wonderful people:
77
77
  </sub>
78
78
  </a>
79
79
  </td>
80
+ <td align="center" valign="top" width="14.28%">
81
+ <a href="https://twitter.com/trashh_dev">
82
+ <img src="https://pbs.twimg.com/profile_images/1598959528518643713/aWdwBYxv_400x400.jpg" width="100px;" alt="Chris Bautista"/>
83
+ <br />
84
+ <sub>
85
+ <b>Chris Bautista</b>
86
+ </sub>
87
+ </a>
88
+ </td>
80
89
  </tr>
81
90
  </tbody>
82
91
  </table>
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- module.exports = {
40
- name: 'generate',
41
- alias: ['g'],
42
- run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
43
- var parameters, generate, info, name;
44
- return __generator(this, function (_a) {
45
- switch (_a.label) {
46
- case 0:
47
- parameters = toolbox.parameters, generate = toolbox.template.generate, info = toolbox.print.info;
48
- name = parameters.first;
49
- return [4 /*yield*/, generate({
50
- template: 'model.ts.ejs',
51
- target: "models/".concat(name, "-model.ts"),
52
- props: { name: name },
53
- })];
54
- case 1:
55
- _a.sent();
56
- info("Generated file at models/".concat(name, "-model.ts"));
57
- return [2 /*return*/];
58
- }
59
- });
60
- }); },
61
- };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2YsSUFBSSxFQUFFLFVBQVU7SUFDaEIsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osR0FBRyxFQUFFLFVBQU8sT0FBdUI7Ozs7O29CQUUvQixVQUFVLEdBR1IsT0FBTyxXQUhDLEVBQ0UsUUFBUSxHQUVsQixPQUFPLGtCQUZXLEVBQ1gsSUFBSSxHQUNYLE9BQU8sV0FESSxDQUNKO29CQUVMLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFBO29CQUU3QixxQkFBTSxRQUFRLENBQUM7NEJBQ2IsUUFBUSxFQUFFLGNBQWM7NEJBQ3hCLE1BQU0sRUFBRSxpQkFBVSxJQUFJLGNBQVc7NEJBQ2pDLEtBQUssRUFBRSxFQUFFLElBQUksTUFBQSxFQUFFO3lCQUNoQixDQUFDLEVBQUE7O29CQUpGLFNBSUUsQ0FBQTtvQkFFRixJQUFJLENBQUMsbUNBQTRCLElBQUksY0FBVyxDQUFDLENBQUE7Ozs7U0FDbEQ7Q0FDRixDQUFBIn0=
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- name: '<%= props.name %>'
3
- }
@@ -1 +0,0 @@
1
- export {};