@tamagui/native-ci 2.0.0-rc.3 → 2.0.0-rc.5
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/dist/metro.js +12 -0
- package/dist/metro.js.map +1 -1
- package/dist/metro.mjs +11 -1
- package/dist/metro.mjs.map +1 -1
- package/package.json +2 -2
- package/src/ios.ts +11 -15
- package/src/metro.ts +23 -1
- package/types/ios.d.ts +1 -0
- package/types/ios.d.ts.map +1 -1
- package/types/metro.d.ts.map +1 -1
package/dist/metro.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
1
2
|
import {
|
|
2
3
|
METRO_URL,
|
|
4
|
+
METRO_PORT,
|
|
3
5
|
DEFAULT_METRO_WAIT_ATTEMPTS,
|
|
4
6
|
DEFAULT_METRO_WAIT_INTERVAL_MS
|
|
5
7
|
} from "./constants";
|
|
@@ -78,10 +80,20 @@ async function isMetroRunning(platform) {
|
|
|
78
80
|
return !1;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
83
|
+
function killPortProcess() {
|
|
84
|
+
try {
|
|
85
|
+
const pid = execSync(`lsof -ti tcp:${METRO_PORT} -sTCP:LISTEN`, {
|
|
86
|
+
encoding: "utf-8"
|
|
87
|
+
}).trim();
|
|
88
|
+
pid && (console.info(`Killing process ${pid} on port ${METRO_PORT}...`), process.kill(Number(pid), "SIGTERM"));
|
|
89
|
+
} catch {
|
|
90
|
+
}
|
|
91
|
+
}
|
|
81
92
|
async function withMetro(platform, fn) {
|
|
82
93
|
if (await isMetroRunning(platform))
|
|
83
94
|
return console.info(`
|
|
84
95
|
--- Metro already running, reusing existing instance ---`), await prewarmBundle(platform), await fn();
|
|
96
|
+
killPortProcess();
|
|
85
97
|
const metro = startMetro();
|
|
86
98
|
setupSignalHandlers(metro);
|
|
87
99
|
try {
|
package/dist/metro.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/metro.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/metro.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { METRO_URL, METRO_PORT, DEFAULT_METRO_WAIT_ATTEMPTS, DEFAULT_METRO_WAIT_INTERVAL_MS } from "./constants.mjs";
|
|
2
3
|
async function waitForMetro(options) {
|
|
3
4
|
const {
|
|
4
5
|
platform,
|
|
@@ -80,9 +81,18 @@ async function isMetroRunning(platform) {
|
|
|
80
81
|
return !1;
|
|
81
82
|
}
|
|
82
83
|
}
|
|
84
|
+
function killPortProcess() {
|
|
85
|
+
try {
|
|
86
|
+
const pid = execSync(`lsof -ti tcp:${METRO_PORT} -sTCP:LISTEN`, {
|
|
87
|
+
encoding: "utf-8"
|
|
88
|
+
}).trim();
|
|
89
|
+
pid && (console.info(`Killing process ${pid} on port ${METRO_PORT}...`), process.kill(Number(pid), "SIGTERM"));
|
|
90
|
+
} catch {}
|
|
91
|
+
}
|
|
83
92
|
async function withMetro(platform, fn) {
|
|
84
93
|
if (await isMetroRunning(platform)) return console.info(`
|
|
85
94
|
--- Metro already running, reusing existing instance ---`), await prewarmBundle(platform), await fn();
|
|
95
|
+
killPortProcess();
|
|
86
96
|
const metro = startMetro();
|
|
87
97
|
setupSignalHandlers(metro);
|
|
88
98
|
try {
|
package/dist/metro.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["METRO_URL","DEFAULT_METRO_WAIT_ATTEMPTS","DEFAULT_METRO_WAIT_INTERVAL_MS","waitForMetro","options","platform","maxAttempts","intervalMs","console","info","i","fetch","headers","ok","Bun","sleep","prewarmBundle","response","bundleUrl","json","launchAsset","url","startMetro","isCI","process","env","CI","args","push","proc","spawn","EXPO_NO_TELEMETRY","stdout","stderr","kill","pid","String","exited","setupSignalHandlers","metro","cleanup","signal","exit","on","isMetroRunning","withMetro","fn","Error"],"sources":["../src/metro.ts"],"sourcesContent":[null],"mappings":"AAQA,
|
|
1
|
+
{"version":3,"names":["execSync","METRO_URL","METRO_PORT","DEFAULT_METRO_WAIT_ATTEMPTS","DEFAULT_METRO_WAIT_INTERVAL_MS","waitForMetro","options","platform","maxAttempts","intervalMs","console","info","i","fetch","headers","ok","Bun","sleep","prewarmBundle","response","bundleUrl","json","launchAsset","url","startMetro","isCI","process","env","CI","args","push","proc","spawn","EXPO_NO_TELEMETRY","stdout","stderr","kill","pid","String","exited","setupSignalHandlers","metro","cleanup","signal","exit","on","isMetroRunning","killPortProcess","encoding","trim","Number","withMetro","fn","Error"],"sources":["../src/metro.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/native-ci",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.5",
|
|
4
4
|
"description": "Native CI/CD helpers for React Native apps with Expo - fingerprinting, caching, and build optimization",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@expo/fingerprint": "^0.15.3"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@tamagui/build": "2.0.0-rc.
|
|
44
|
+
"@tamagui/build": "2.0.0-rc.5",
|
|
45
45
|
"@types/bun": "^1.1.0",
|
|
46
46
|
"@types/node": "^22.1.0"
|
|
47
47
|
},
|
package/src/ios.ts
CHANGED
|
@@ -107,6 +107,7 @@ function saveFingerprintCache(projectRoot: string, cache: FingerprintCache): voi
|
|
|
107
107
|
*
|
|
108
108
|
* IMPORTANT: Fingerprint only changes when NATIVE dependencies change
|
|
109
109
|
* (Podfile, native modules, etc). JS-only changes don't require rebuild.
|
|
110
|
+
* Set SKIP_IOS_REBUILD=1 to skip rebuild even when fingerprint changes.
|
|
110
111
|
*/
|
|
111
112
|
export async function ensureIOSApp(config: string = 'ios.sim.debug'): Promise<void> {
|
|
112
113
|
// On CI, the app is built separately - don't build here
|
|
@@ -153,29 +154,24 @@ export async function ensureIOSApp(config: string = 'ios.sim.debug'): Promise<vo
|
|
|
153
154
|
return
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
//
|
|
157
|
-
// Many fingerprint changes are false positives (timestamp changes, etc)
|
|
157
|
+
// fingerprint changed - rebuild by default since native deps likely changed
|
|
158
158
|
if (cache?.fingerprint) {
|
|
159
159
|
console.info(`\n--- iOS fingerprint changed ---`)
|
|
160
160
|
console.info(`Previous: ${cache.fingerprint.slice(0, 16)}...`)
|
|
161
161
|
console.info(`Current: ${currentFingerprint.slice(0, 16)}...`)
|
|
162
|
-
console.info(`App exists at ${appPath}`)
|
|
163
162
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
if (process.env.SKIP_IOS_REBUILD) {
|
|
164
|
+
console.info('SKIP_IOS_REBUILD set, using existing app')
|
|
165
|
+
saveFingerprintCache(projectRoot, {
|
|
166
|
+
fingerprint: currentFingerprint,
|
|
167
|
+
timestamp: new Date().toISOString(),
|
|
168
|
+
appPath,
|
|
169
|
+
})
|
|
168
170
|
return
|
|
169
171
|
}
|
|
170
172
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
console.info('Using existing app (set FORCE_IOS_REBUILD=1 to force rebuild)')
|
|
174
|
-
saveFingerprintCache(projectRoot, {
|
|
175
|
-
fingerprint: currentFingerprint,
|
|
176
|
-
timestamp: new Date().toISOString(),
|
|
177
|
-
appPath,
|
|
178
|
-
})
|
|
173
|
+
console.info('Native dependencies changed, rebuilding...')
|
|
174
|
+
await buildIOSApp(config, projectRoot, appPath, currentFingerprint)
|
|
179
175
|
return
|
|
180
176
|
}
|
|
181
177
|
|
package/src/metro.ts
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import type { Subprocess } from 'bun'
|
|
9
|
+
import { execSync } from 'node:child_process'
|
|
9
10
|
import {
|
|
10
11
|
METRO_URL,
|
|
12
|
+
METRO_PORT,
|
|
11
13
|
DEFAULT_METRO_WAIT_ATTEMPTS,
|
|
12
14
|
DEFAULT_METRO_WAIT_INTERVAL_MS,
|
|
13
15
|
type Platform,
|
|
@@ -167,6 +169,24 @@ async function isMetroRunning(platform: Platform): Promise<boolean> {
|
|
|
167
169
|
}
|
|
168
170
|
}
|
|
169
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Kill whatever process is listening on the Metro port.
|
|
174
|
+
* Prevents conflicts with other projects' Metro instances (or anything else on 8081).
|
|
175
|
+
*/
|
|
176
|
+
function killPortProcess(): void {
|
|
177
|
+
try {
|
|
178
|
+
const pid = execSync(`lsof -ti tcp:${METRO_PORT} -sTCP:LISTEN`, {
|
|
179
|
+
encoding: 'utf-8',
|
|
180
|
+
}).trim()
|
|
181
|
+
if (pid) {
|
|
182
|
+
console.info(`Killing process ${pid} on port ${METRO_PORT}...`)
|
|
183
|
+
process.kill(Number(pid), 'SIGTERM')
|
|
184
|
+
}
|
|
185
|
+
} catch {
|
|
186
|
+
// nothing listening, or lsof not available
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
170
190
|
/**
|
|
171
191
|
* Run a function with Metro bundler, ensuring proper cleanup.
|
|
172
192
|
* This is a convenience wrapper that handles starting Metro, waiting for it,
|
|
@@ -185,7 +205,9 @@ export async function withMetro<T>(platform: Platform, fn: () => Promise<T>): Pr
|
|
|
185
205
|
return await fn()
|
|
186
206
|
}
|
|
187
207
|
|
|
188
|
-
//
|
|
208
|
+
// kill anything on the port before starting (e.g. another project's Metro)
|
|
209
|
+
killPortProcess()
|
|
210
|
+
|
|
189
211
|
const metro = startMetro()
|
|
190
212
|
setupSignalHandlers(metro)
|
|
191
213
|
|
package/types/ios.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export declare function ensureIOSFolder(): Promise<void>;
|
|
|
29
29
|
*
|
|
30
30
|
* IMPORTANT: Fingerprint only changes when NATIVE dependencies change
|
|
31
31
|
* (Podfile, native modules, etc). JS-only changes don't require rebuild.
|
|
32
|
+
* Set SKIP_IOS_REBUILD=1 to skip rebuild even when fingerprint changes.
|
|
32
33
|
*/
|
|
33
34
|
export declare function ensureIOSApp(config?: string): Promise<void>;
|
|
34
35
|
//# sourceMappingURL=ios.d.ts.map
|
package/types/ios.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBrD;AAkCD
|
|
1
|
+
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBrD;AAkCD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyElF"}
|
package/types/metro.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../src/metro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../src/metro.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,OAAO,EAKL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,EAAE,QAAQ,CAAA;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAsCzC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAS7D;AAkCD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA4BvF"}
|