create-expo-stack 2.24.0-next.8fdc608 → 2.24.0-next.f2abac9
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 +21 -0
- package/build/templates/base/app.json.ejs +2 -2
- package/build/templates/base/babel.config.js.ejs +8 -1
- package/build/templates/base/package.json.ejs +27 -23
- package/build/templates/packages/expo-router/metro.config.js.ejs +4 -2
- package/build/templates/packages/nativewind/global.css +0 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,6 +51,27 @@ To get started, use npx to run the CLI tool. You will be prompted to opt into th
|
|
|
51
51
|
|
|
52
52
|
<img src="https://github.com/roninoss/create-expo-stack/assets/5482800/e709dd66-cb9b-463c-91f9-b842bb80585c" />
|
|
53
53
|
|
|
54
|
+
## Try the Nativewind v5 release candidate
|
|
55
|
+
|
|
56
|
+
Create a new Expo 57 project with the `next` release:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
npx rn-new@next my-app --nativewind --expo-router
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The equivalent command is `npx create-expo-stack@next my-app --nativewind --expo-router`.
|
|
63
|
+
Omit `--expo-router` for a project without Router.
|
|
64
|
+
|
|
65
|
+
Nativewind starters pin `nativewind@5.0.0-rc.0`, `react-native-css@3.1.0-rc.0`, and Tailwind CSS 4.1.12.
|
|
66
|
+
NativewindUI starters continue to use Nativewind 4.2.6 and Tailwind CSS 3.
|
|
67
|
+
|
|
68
|
+
For an existing v5 preview project, update Nativewind and its engine together. Follow the
|
|
69
|
+
[RC release notes](https://github.com/nativewind/nativewind/releases/tag/5.0.0-rc.0)
|
|
70
|
+
for Expo alignment, configuration checks, and migration details.
|
|
71
|
+
|
|
72
|
+
For v4 projects, the [migration skill draft](https://github.com/nativewind/nativewind/tree/main/skills/nativewind-v4-to-v5)
|
|
73
|
+
is available for evaluation. It has not yet passed independent application migration verification.
|
|
74
|
+
|
|
54
75
|
## Tech Stack for the templates
|
|
55
76
|
|
|
56
77
|
Currently, all of the [templates](https://github.com/roninoss/create-expo-stack/tree/main/cli/src/templates) use the same versions of the following libraries. Not all of the templates include all of the libraries, but they are all available for use.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
<% if (props.navigationPackage?.name === 'expo-router') { %>
|
|
7
7
|
"scheme": "<%= props.projectScheme %>",
|
|
8
|
-
"platforms": ["ios", "android"],
|
|
8
|
+
"platforms": ["ios", "android"<% if (props.stylingPackage?.name === "nativewind") { %>, "web"<% } %>],
|
|
9
9
|
"web": {
|
|
10
10
|
"bundler": "metro",
|
|
11
11
|
"output": "static",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<% } %>
|
|
55
55
|
"orientation": "portrait",
|
|
56
56
|
"icon": "./assets/icon.png",
|
|
57
|
-
<% if (props.stylingPackage?.name === "nativewindui" || props.stylingPackage?.name === "unistyles") { %>
|
|
57
|
+
<% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui" || props.stylingPackage?.name === "unistyles") { %>
|
|
58
58
|
"userInterfaceStyle": "automatic",
|
|
59
59
|
<% } else { %>
|
|
60
60
|
"userInterfaceStyle": "light",
|
|
@@ -15,7 +15,14 @@ module.exports = function(api) {
|
|
|
15
15
|
plugins.push('react-native-worklets/plugin');
|
|
16
16
|
|
|
17
17
|
return {
|
|
18
|
-
presets: [
|
|
18
|
+
presets: [
|
|
19
|
+
<% if (props.stylingPackage?.name === "nativewindui") { %>
|
|
20
|
+
['babel-preset-expo', { jsxImportSource: 'nativewind' }],
|
|
21
|
+
'nativewind/babel',
|
|
22
|
+
<% } else { %>
|
|
23
|
+
'babel-preset-expo',
|
|
24
|
+
<% } %>
|
|
25
|
+
],
|
|
19
26
|
plugins,
|
|
20
27
|
};
|
|
21
28
|
};
|
|
@@ -30,13 +30,15 @@
|
|
|
30
30
|
"web": "expo start --web"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
<% if (props.stylingPackage?.name === "nativewind"
|
|
34
|
-
"nativewind": "
|
|
35
|
-
"react-native-css": "
|
|
33
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
34
|
+
"nativewind": "5.0.0-rc.0",
|
|
35
|
+
"react-native-css": "3.1.0-rc.0",
|
|
36
36
|
"postcss": "^8.5.6",
|
|
37
|
-
"@tailwindcss/postcss": "
|
|
37
|
+
"@tailwindcss/postcss": "4.1.12",
|
|
38
|
+
"expo-system-ui": "~57.0.4",
|
|
38
39
|
<% } %>
|
|
39
40
|
<% if (props.stylingPackage?.name === "nativewindui") { %>
|
|
41
|
+
"nativewind": "4.2.6",
|
|
40
42
|
"@react-navigation/elements": "^2.9.25",
|
|
41
43
|
"@shopify/flash-list": "2.0.2",
|
|
42
44
|
"class-variance-authority": "^0.7.0",
|
|
@@ -82,7 +84,7 @@
|
|
|
82
84
|
<% } %>
|
|
83
85
|
|
|
84
86
|
<% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-screens")) { %>
|
|
85
|
-
"react-native-screens": "4.25.2",
|
|
87
|
+
"react-native-screens": "<%= props.stylingPackage?.name === 'nativewind' ? '~4.26.0' : '4.25.2' %>",
|
|
86
88
|
<% } %>
|
|
87
89
|
|
|
88
90
|
<% if (props.packages?.some((p) => p.name === "react-native-svg")) { %>
|
|
@@ -96,7 +98,7 @@
|
|
|
96
98
|
<% if (props.navigationPackage?.name === "react-navigation") { %>
|
|
97
99
|
"@react-navigation/stack": "^7.4.8",
|
|
98
100
|
"@expo/vector-icons": "^15.0.2",
|
|
99
|
-
"expo-font": "~57.0.0",
|
|
101
|
+
"expo-font": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '~57.0.0' %>",
|
|
100
102
|
<% } %>
|
|
101
103
|
|
|
102
104
|
<% if (props.analyticsPackage?.name === "vexo-analytics") { %>
|
|
@@ -116,14 +118,16 @@
|
|
|
116
118
|
<% } %>
|
|
117
119
|
|
|
118
120
|
<% if (props.navigationPackage?.name === "expo-router") { %>
|
|
119
|
-
"@expo/log-box": "^57.0.0",
|
|
121
|
+
"@expo/log-box": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '^57.0.0' %>",
|
|
120
122
|
"@expo/vector-icons": "^15.0.2",
|
|
121
|
-
"expo-font": "~57.0.0",
|
|
122
|
-
"expo-linking": "~57.0.2",
|
|
123
|
-
"expo-router": "~57.0.4",
|
|
124
|
-
"expo-constants": "~57.0.3",
|
|
123
|
+
"expo-font": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '~57.0.0' %>",
|
|
124
|
+
"expo-linking": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.10' : '~57.0.2' %>",
|
|
125
|
+
"expo-router": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.21' : '~57.0.4' %>",
|
|
126
|
+
"expo-constants": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.18' : '~57.0.3' %>",
|
|
127
|
+
<% if (props.stylingPackage?.name !== "nativewind") { %>
|
|
125
128
|
"expo-system-ui": "~57.0.0",
|
|
126
|
-
|
|
129
|
+
<% } %>
|
|
130
|
+
"expo-web-browser": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.3' : '~57.0.0' %>",
|
|
127
131
|
"react-dom": "19.2.3",
|
|
128
132
|
"react-native-web": "~0.21.0",
|
|
129
133
|
<% } %>
|
|
@@ -140,32 +144,32 @@
|
|
|
140
144
|
<% if (props.internalizationPackage?.name === "i18next") { %>
|
|
141
145
|
"i18next": "^23.7.20",
|
|
142
146
|
"react-i18next": "^14.0.1",
|
|
143
|
-
"expo-localization": "~57.0.0",
|
|
147
|
+
"expo-localization": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
|
|
144
148
|
<% } %>
|
|
145
149
|
<% if (props.flags?.eas || props.stylingPackage?.name === "nativewindui") { %>
|
|
146
|
-
"expo-dev-client": "~57.0.5",
|
|
147
|
-
"expo-device": "~57.0.0",
|
|
150
|
+
"expo-dev-client": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.19' : '~57.0.5' %>",
|
|
151
|
+
"expo-device": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
|
|
148
152
|
<% } %>
|
|
149
153
|
|
|
150
|
-
"react-native-reanimated": "4.5.0",
|
|
151
|
-
"react-native-worklets": "0.10.0",
|
|
154
|
+
"react-native-reanimated": "<%= props.stylingPackage?.name === 'nativewind' ? '4.5.1' : '4.5.0' %>",
|
|
155
|
+
"react-native-worklets": "<%= props.stylingPackage?.name === 'nativewind' ? '0.10.1' : '0.10.0' %>",
|
|
152
156
|
|
|
153
157
|
"react-native-safe-area-context": "~5.7.0",
|
|
154
|
-
"expo": "~57.0.4",
|
|
155
|
-
"expo-splash-screen": "~57.0.2",
|
|
156
|
-
"expo-status-bar": "~57.0.0",
|
|
158
|
+
"expo": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.22' : '~57.0.4' %>",
|
|
159
|
+
"expo-splash-screen": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.9' : '~57.0.2' %>",
|
|
160
|
+
"expo-status-bar": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.1' : '~57.0.0' %>",
|
|
157
161
|
"react": "19.2.3",
|
|
158
|
-
"react-native": "0.86.0"
|
|
162
|
+
"react-native": "<%= props.stylingPackage?.name === 'nativewind' ? '0.86.3' : '0.86.0' %>"
|
|
159
163
|
},
|
|
160
164
|
"devDependencies": {
|
|
161
165
|
"@babel/core": "^7.20.0",
|
|
162
166
|
"@types/react": "~19.2.2",
|
|
163
167
|
"eslint": "^9.25.1",
|
|
164
|
-
"eslint-config-expo": "~57.0.0",
|
|
168
|
+
"eslint-config-expo": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
|
|
165
169
|
"eslint-config-prettier": "^10.1.2",
|
|
166
170
|
"prettier": "^3.2.5",
|
|
167
171
|
<% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
|
|
168
|
-
"tailwindcss": "
|
|
172
|
+
"tailwindcss": "<%= props.stylingPackage?.name === 'nativewind' ? '4.1.12' : '^3.4.17' %>",
|
|
169
173
|
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
170
174
|
<% } %>
|
|
171
175
|
"typescript": "~6.0.3"
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// Learn more https://docs.expo.io/guides/customizing-metro
|
|
2
2
|
const { getDefaultConfig } = require('expo/metro-config');
|
|
3
|
-
<% if (
|
|
3
|
+
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
4
4
|
const { withNativewind } = require("nativewind/metro");
|
|
5
|
+
<% } else if (props.stylingPackage?.name === "nativewindui") { %>
|
|
6
|
+
const { withNativeWind } = require("nativewind/metro");
|
|
5
7
|
<% } %>
|
|
6
8
|
|
|
7
9
|
/** @type {import('expo/metro-config').MetroConfig} */
|
|
@@ -11,7 +13,7 @@ const config = getDefaultConfig(__dirname);
|
|
|
11
13
|
<% if (props.stylingPackage?.name === "nativewind") { %>
|
|
12
14
|
module.exports = withNativewind(config);
|
|
13
15
|
<% } else if (props.stylingPackage?.name === "nativewindui") { %>
|
|
14
|
-
module.exports =
|
|
16
|
+
module.exports = withNativeWind(config, { input: './global.css', inlineRem: 16 });
|
|
15
17
|
<% } else { %>
|
|
16
18
|
module.exports = config;
|
|
17
19
|
<% } %>
|