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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # create-expo-boilerplate
2
2
 
3
- Scaffold a new Expo app from [React-Native-Expo-Boilterplate](https://github.com/EndLess728/React-Native-Expo-Boilterplate) — no cloning, no deleting example code by hand.
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 the React-Native-Expo-Boilterplate.')
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))
@@ -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.com/EndLess728/React-Native-Expo-Boilterplate).', '', '## 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/');
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.1",
4
- "description": "Scaffold a production-ready Expo app from the React-Native-Expo-Boilterplate, with your choice of state management, navigation, language and tooling.",
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/React-Native-Expo-Boilterplate.git",
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",
@@ -80,6 +80,7 @@ __tests__/
80
80
  .claude/
81
81
  .code-review-graph/
82
82
  docs/
83
+ website/
83
84
  IMPROVEMENT_REPORT.md
84
85
 
85
86
  # Keep .env.<env> for EAS — they are gitignored but EAS needs them. The
@@ -40,7 +40,7 @@ commit_parsers = [
40
40
 
41
41
  [remote.github]
42
42
  owner = "EndLess728"
43
- repo = "React-Native-Expo-Boilterplate"
43
+ repo = "react-native-expo-boilerplate"
44
44
 
45
45
  [bump]
46
46
  # Before 1.0.0, breaking changes bump the minor and features bump the patch.
@@ -42,6 +42,7 @@ module.exports = [
42
42
  '**/.vscode/*',
43
43
  '**/docs/*',
44
44
  '**/cli/*',
45
+ '**/website/*',
45
46
  '**/expo-env.d.ts',
46
47
  '**/babel.config.js',
47
48
  '**/metro.config.js',
@@ -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',
@@ -22,6 +22,7 @@
22
22
  "plugins",
23
23
  "**/__tests__/**",
24
24
  "**/__mocks__/**",
25
+ "website",
25
26
  "cli"
26
27
  ],
27
28
  "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts"]