create-expo-boilerplate 1.1.1 → 1.1.2
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/README.md +1 -1
- package/dist/index.js +1 -1
- package/dist/steps/readme.js +1 -1
- package/dist/template.js +4 -3
- package/package.json +22 -4
- package/template/.easignore +1 -0
- package/template/cliff.toml +1 -1
- package/template/eslint.config.js +1 -0
- package/template/jest.config.js +3 -3
- package/template/tsconfig.json +1 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-expo-boilerplate
|
|
2
2
|
|
|
3
|
-
Scaffold a new Expo app from [
|
|
3
|
+
Scaffold a new Expo app from [react-native-expo-boilerplate](https://github.com/EndLess728/react-native-expo-boilerplate) ([docs](https://endless728.github.io/react-native-expo-boilerplate/)) — no cloning, no deleting example code by hand.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npx create-expo-boilerplate my-app
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ const oneOf = (choices) => (value) => {
|
|
|
19
19
|
};
|
|
20
20
|
const program = new Command()
|
|
21
21
|
.name('create-expo-boilerplate')
|
|
22
|
-
.description('Scaffold an Expo app from
|
|
22
|
+
.description('Scaffold an Expo app from react-native-expo-boilerplate.')
|
|
23
23
|
.version(version)
|
|
24
24
|
.argument('[directory]', 'where to create the project')
|
|
25
25
|
.option('--state <library>', 'zustand | redux', oneOf(CHOICES.state))
|
package/dist/steps/readme.js
CHANGED
|
@@ -36,7 +36,7 @@ export function renderReadme(o) {
|
|
|
36
36
|
.join(' + ');
|
|
37
37
|
const lines = [];
|
|
38
38
|
const push = (...l) => lines.push(...l);
|
|
39
|
-
push(`# ${o.displayName}`, '', 'Expo app generated with [create-expo-boilerplate](https://github.
|
|
39
|
+
push(`# ${o.displayName}`, '', 'Expo app generated with [create-expo-boilerplate](https://endless728.github.io/react-native-expo-boilerplate/).', '', '## Stack', '', '| Category | Choice |', '|---|---|', `| **Language** | ${ts ? 'TypeScript (strict)' : 'JavaScript'} |`, `| **Navigation** | ${navLabel} |`, `| **State** | ${stateLabel} |`, '| **Data fetching** | TanStack Query v5 + Axios + react-query-kit |', '| **Forms** | React Hook Form + Zod |', `| **Styling** | ${STYLING_README[o.styling]} |`, '| **Storage** | MMKV, AES-encrypted, key kept in the iOS Keychain / Android Keystore |', '| **i18n** | i18next + react-i18next (en, es, ar with RTL) |', '| **Testing** | jest-expo + React Native Testing Library |', `| **Tooling** | ${tooling} |`, '', '## Getting started', '', '```bash', `${PM[o.packageManager].install} # also seeds .env.development / .staging / .production`, '$EDITOR .env.development # fill in your API URLs', `${run} android:development # prebuild + run on Android`, `${run} ios:development # prebuild + run on iOS`, '```', '', '`android/` and `ios/` are generated by `expo prebuild` and are not committed.', '', '## Project structure', '', '```', '├── src/');
|
|
40
40
|
if (isRouter) {
|
|
41
41
|
push(`│ ├── app/ # Expo Router routes — thin re-exports of feature screens`, `│ │ ├── _layout.${xx} # bootstrap + providers + <Stack.Protected> auth gating`, `│ │ ├── (auth)/login.${xx}`, `│ │ └── (tabs)/ # index → Home, settings → Settings`);
|
|
42
42
|
}
|
package/dist/template.js
CHANGED
|
@@ -24,6 +24,7 @@ const EXCLUDED = [
|
|
|
24
24
|
/^README\.md$/, // every generated project gets its own README
|
|
25
25
|
/^LICENSE$/, // the boilerplate's license; a generated app is its owner's to license
|
|
26
26
|
/^docs\//, // guides for this repo's own stack and CI; generated apps get a README for theirs
|
|
27
|
+
/^website\//, // the documentation site (GitHub Pages), not part of an app
|
|
27
28
|
/^\.env\.(development|staging|production)$/, // seeded from .env.example on install
|
|
28
29
|
/^\.env(\.local)?$/,
|
|
29
30
|
];
|
|
@@ -67,7 +68,7 @@ export async function copyBaseTemplate(targetDir) {
|
|
|
67
68
|
}
|
|
68
69
|
/** The boilerplate repo's configs exclude `cli/`; generated apps have no such folder. */
|
|
69
70
|
async function stripRepoOnlyConfig(files) {
|
|
70
|
-
await files.replace('tsconfig.json', ',\n "cli"\n', '\n');
|
|
71
|
-
await files.replace('jest.config.js', /\n {2}\/\/ `cli\/` is the create-expo-boilerplate package[\s\S]*?modulePathIgnorePatterns: \['<rootDir>\/cli\/'\],/, '');
|
|
72
|
-
await files.replace('eslint.config.js', " '**/cli/*',\n", '', { optional: true });
|
|
71
|
+
await files.replace('tsconfig.json', ',\n "website",\n "cli"\n', '\n');
|
|
72
|
+
await files.replace('jest.config.js', /\n {2}\/\/ `cli\/` is the create-expo-boilerplate package[\s\S]*?modulePathIgnorePatterns: \['<rootDir>\/cli\/', '<rootDir>\/website\/'\],/, '');
|
|
73
|
+
await files.replace('eslint.config.js', " '**/cli/*',\n '**/website/*',\n", '', { optional: true });
|
|
73
74
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-expo-boilerplate",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.2",
|
|
4
|
+
"description": "Create a production-ready Expo and React Native app in one command: Expo Router or React Navigation, Zustand or Redux Toolkit, Unistyles, StyleSheet or Tailwind, TypeScript or JavaScript.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-expo-boilerplate": "dist/index.js"
|
|
@@ -24,15 +24,33 @@
|
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
27
|
-
"url": "git+https://github.com/EndLess728/
|
|
27
|
+
"url": "git+https://github.com/EndLess728/react-native-expo-boilerplate.git",
|
|
28
28
|
"directory": "cli"
|
|
29
29
|
},
|
|
30
|
+
"homepage": "https://endless728.github.io/react-native-expo-boilerplate/",
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/EndLess728/react-native-expo-boilerplate/issues"
|
|
33
|
+
},
|
|
30
34
|
"keywords": [
|
|
31
35
|
"expo",
|
|
32
36
|
"react-native",
|
|
33
37
|
"boilerplate",
|
|
38
|
+
"starter",
|
|
34
39
|
"template",
|
|
35
|
-
"create"
|
|
40
|
+
"create",
|
|
41
|
+
"create-expo-app",
|
|
42
|
+
"expo-router",
|
|
43
|
+
"react-navigation",
|
|
44
|
+
"zustand",
|
|
45
|
+
"redux-toolkit",
|
|
46
|
+
"tanstack-query",
|
|
47
|
+
"unistyles",
|
|
48
|
+
"tailwind",
|
|
49
|
+
"uniwind",
|
|
50
|
+
"typescript",
|
|
51
|
+
"mmkv",
|
|
52
|
+
"i18n",
|
|
53
|
+
"eas"
|
|
36
54
|
],
|
|
37
55
|
"author": "EndLess728",
|
|
38
56
|
"license": "MIT",
|
package/template/.easignore
CHANGED
package/template/cliff.toml
CHANGED
package/template/jest.config.js
CHANGED
|
@@ -14,9 +14,9 @@ module.exports = {
|
|
|
14
14
|
')/)',
|
|
15
15
|
],
|
|
16
16
|
// `cli/` is the create-expo-boilerplate package — its overlays have their
|
|
17
|
-
// own tests that only run inside generated projects.
|
|
18
|
-
testPathIgnorePatterns: ['/node_modules/', '<rootDir>/cli/'],
|
|
19
|
-
modulePathIgnorePatterns: ['<rootDir>/cli/'],
|
|
17
|
+
// own tests that only run inside generated projects. `website/` is the docs site.
|
|
18
|
+
testPathIgnorePatterns: ['/node_modules/', '<rootDir>/cli/', '<rootDir>/website/'],
|
|
19
|
+
modulePathIgnorePatterns: ['<rootDir>/cli/', '<rootDir>/website/'],
|
|
20
20
|
moduleNameMapper: {
|
|
21
21
|
'^@/(.*)$': '<rootDir>/src/$1',
|
|
22
22
|
'^@env$': '<rootDir>/__mocks__/@env.ts',
|