@tamagui/cli 1.139.1 → 1.139.3
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/build.cjs +98 -5
- package/dist/build.js +77 -4
- package/dist/build.js.map +1 -1
- package/dist/cli.cjs +13 -4
- package/dist/cli.js +13 -4
- package/dist/cli.js.map +1 -1
- package/dist/cli.native.js +4 -34
- package/dist/cli.native.js.map +1 -1
- package/package.json +7 -7
- package/src/build.ts +170 -2
- package/src/cli.ts +17 -2
- package/types/build.d.ts +19 -1
- package/types/build.d.ts.map +1 -1
package/dist/build.cjs
CHANGED
|
@@ -38,7 +38,10 @@ var import_static = require("@tamagui/static"),
|
|
|
38
38
|
import_chokidar = __toESM(require("chokidar")),
|
|
39
39
|
import_fs_extra = require("fs-extra"),
|
|
40
40
|
import_micromatch = __toESM(require("micromatch")),
|
|
41
|
-
import_node_path = require("node:path")
|
|
41
|
+
import_node_path = require("node:path"),
|
|
42
|
+
import_node_os = require("node:os"),
|
|
43
|
+
import_node_child_process = require("node:child_process"),
|
|
44
|
+
import_node_crypto = require("node:crypto");
|
|
42
45
|
const build = async options => {
|
|
43
46
|
const sourceDir = options.dir ?? ".",
|
|
44
47
|
promises = [],
|
|
@@ -74,6 +77,36 @@ const build = async options => {
|
|
|
74
77
|
}
|
|
75
78
|
filePlatforms.length > 0 && fileToTargets.set(sourcePath, filePlatforms);
|
|
76
79
|
}
|
|
80
|
+
const stats = {
|
|
81
|
+
filesProcessed: 0,
|
|
82
|
+
optimized: 0,
|
|
83
|
+
flattened: 0,
|
|
84
|
+
styled: 0,
|
|
85
|
+
found: 0
|
|
86
|
+
},
|
|
87
|
+
trackedFiles = [],
|
|
88
|
+
restoreDir = options.runCommand ? (0, import_node_path.join)((0, import_node_os.tmpdir)(), `tamagui-restore-${process.pid}`) : null;
|
|
89
|
+
restoreDir && (await (0, import_fs_extra.mkdir)(restoreDir, {
|
|
90
|
+
recursive: !0
|
|
91
|
+
}));
|
|
92
|
+
const trackFile = async filePath => {
|
|
93
|
+
if (!restoreDir) return;
|
|
94
|
+
const hash = (0, import_node_crypto.createHash)("md5").update(filePath).digest("hex"),
|
|
95
|
+
backupPath = (0, import_node_path.join)(restoreDir, hash);
|
|
96
|
+
await (0, import_fs_extra.copyFile)(filePath, backupPath), trackedFiles.push({
|
|
97
|
+
path: filePath,
|
|
98
|
+
hardlinkPath: backupPath,
|
|
99
|
+
mtimeAfterWrite: 0
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
recordMtime = async filePath => {
|
|
103
|
+
if (!restoreDir) return;
|
|
104
|
+
const tracked = trackedFiles.find(t => t.path === filePath);
|
|
105
|
+
if (tracked) {
|
|
106
|
+
const fileStat = await (0, import_fs_extra.stat)(filePath);
|
|
107
|
+
tracked.mtimeAfterWrite = fileStat.mtimeMs;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
77
110
|
for (const [sourcePath, filePlatforms] of fileToTargets) promises.push((async () => {
|
|
78
111
|
options.debug && (process.env.NODE_ENV ||= "development");
|
|
79
112
|
const originalSource = await (0, import_fs_extra.readFile)(sourcePath, "utf-8");
|
|
@@ -93,11 +126,17 @@ const build = async options => {
|
|
|
93
126
|
shouldPrintDebug: options.debug || !1
|
|
94
127
|
});
|
|
95
128
|
if (out) {
|
|
129
|
+
stats.filesProcessed++;
|
|
96
130
|
const cssName = "_" + (0, import_node_path.basename)(sourcePath, (0, import_node_path.extname)(sourcePath)),
|
|
97
131
|
stylePath = (0, import_node_path.join)((0, import_node_path.dirname)(sourcePath), cssName + ".css"),
|
|
98
132
|
code = `import "./${cssName}.css"
|
|
99
133
|
${out.js}`;
|
|
100
|
-
await (0, import_fs_extra.writeFile)(sourcePath, code, "utf-8"), await (0, import_fs_extra.writeFile)(stylePath, out.styles, "utf-8")
|
|
134
|
+
await trackFile(sourcePath), await (0, import_fs_extra.writeFile)(sourcePath, code, "utf-8"), await recordMtime(sourcePath), await (0, import_fs_extra.writeFile)(stylePath, out.styles, "utf-8"), trackedFiles.push({
|
|
135
|
+
path: stylePath,
|
|
136
|
+
hardlinkPath: "",
|
|
137
|
+
// Empty means delete on restore
|
|
138
|
+
mtimeAfterWrite: (await (0, import_fs_extra.stat)(stylePath)).mtimeMs
|
|
139
|
+
});
|
|
101
140
|
}
|
|
102
141
|
}
|
|
103
142
|
if (filePlatforms.includes("native")) {
|
|
@@ -108,8 +147,62 @@ ${out.js}`;
|
|
|
108
147
|
},
|
|
109
148
|
nativeOut = (0, import_static.extractToNative)(sourcePath, originalSource, nativeTamaguiOptions);
|
|
110
149
|
let nativeOutputPath = sourcePath;
|
|
111
|
-
!/\.(web|native|ios|android)\.(tsx|jsx)$/.test(sourcePath) && filePlatforms.length > 1 && (nativeOutputPath = sourcePath.replace(/\.(tsx|jsx)$/, ".native.$1")), nativeOut.code && (await (0, import_fs_extra.writeFile)(nativeOutputPath, nativeOut.code, "utf-8"))
|
|
150
|
+
!/\.(web|native|ios|android)\.(tsx|jsx)$/.test(sourcePath) && filePlatforms.length > 1 && (nativeOutputPath = sourcePath.replace(/\.(tsx|jsx)$/, ".native.$1")), nativeOut.code && ((nativeOutputPath === sourcePath || filePlatforms.length === 1) && (await trackFile(nativeOutputPath)), await (0, import_fs_extra.writeFile)(nativeOutputPath, nativeOut.code, "utf-8"), await recordMtime(nativeOutputPath), nativeOutputPath !== sourcePath && filePlatforms.length > 1 && trackedFiles.push({
|
|
151
|
+
path: nativeOutputPath,
|
|
152
|
+
hardlinkPath: "",
|
|
153
|
+
// Empty = delete on restore
|
|
154
|
+
mtimeAfterWrite: (await (0, import_fs_extra.stat)(nativeOutputPath)).mtimeMs
|
|
155
|
+
}));
|
|
112
156
|
}
|
|
113
157
|
})());
|
|
114
|
-
await Promise.all(promises)
|
|
115
|
-
|
|
158
|
+
if (await Promise.all(promises), options.expectOptimizations !== void 0) {
|
|
159
|
+
const totalOptimizations = stats.optimized + stats.flattened;
|
|
160
|
+
totalOptimizations < options.expectOptimizations && (console.error(`
|
|
161
|
+
Expected at least ${options.expectOptimizations} optimizations but only got ${totalOptimizations}`), console.error(`Stats: ${JSON.stringify(stats, null, 2)}`), process.exit(1)), console.info(`
|
|
162
|
+
\u2713 Met optimization target: ${totalOptimizations} >= ${options.expectOptimizations}`);
|
|
163
|
+
}
|
|
164
|
+
if (options.runCommand && options.runCommand.length > 0) {
|
|
165
|
+
const command = options.runCommand.join(" ");
|
|
166
|
+
console.info(`
|
|
167
|
+
Running: ${command}
|
|
168
|
+
`);
|
|
169
|
+
try {
|
|
170
|
+
(0, import_node_child_process.execSync)(command, {
|
|
171
|
+
stdio: "inherit"
|
|
172
|
+
});
|
|
173
|
+
} catch (err) {
|
|
174
|
+
console.error(`
|
|
175
|
+
Command failed with exit code ${err.status || 1}`), process.exitCode = err.status || 1;
|
|
176
|
+
} finally {
|
|
177
|
+
await restoreFiles(trackedFiles, restoreDir);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
stats,
|
|
182
|
+
trackedFiles
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
async function restoreFiles(trackedFiles, restoreDir) {
|
|
186
|
+
if (!restoreDir || trackedFiles.length === 0) return;
|
|
187
|
+
console.info(`
|
|
188
|
+
Restoring ${trackedFiles.length} files...`);
|
|
189
|
+
let restored = 0,
|
|
190
|
+
skipped = 0,
|
|
191
|
+
deleted = 0;
|
|
192
|
+
for (const tracked of trackedFiles) try {
|
|
193
|
+
const currentStat = await (0, import_fs_extra.stat)(tracked.path).catch(() => null);
|
|
194
|
+
if (currentStat && currentStat.mtimeMs !== tracked.mtimeAfterWrite) {
|
|
195
|
+
console.warn(` Skipping ${tracked.path} - modified during build`), skipped++;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
tracked.hardlinkPath === "" ? (await (0, import_fs_extra.rm)(tracked.path, {
|
|
199
|
+
force: !0
|
|
200
|
+
}), deleted++) : (await (0, import_fs_extra.copyFile)(tracked.hardlinkPath, tracked.path), restored++);
|
|
201
|
+
} catch (err) {
|
|
202
|
+
console.warn(` Failed to restore ${tracked.path}: ${err.message}`), skipped++;
|
|
203
|
+
}
|
|
204
|
+
await (0, import_fs_extra.rm)(restoreDir, {
|
|
205
|
+
recursive: !0,
|
|
206
|
+
force: !0
|
|
207
|
+
}), console.info(` Restored: ${restored}, Deleted: ${deleted}, Skipped: ${skipped}`);
|
|
208
|
+
}
|
package/dist/build.js
CHANGED
|
@@ -25,7 +25,7 @@ __export(build_exports, {
|
|
|
25
25
|
build: () => build
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(build_exports);
|
|
28
|
-
var import_static = require("@tamagui/static"), import_chokidar = __toESM(require("chokidar")), import_fs_extra = require("fs-extra"), import_micromatch = __toESM(require("micromatch")), import_node_path = require("node:path");
|
|
28
|
+
var import_static = require("@tamagui/static"), import_chokidar = __toESM(require("chokidar")), import_fs_extra = require("fs-extra"), import_micromatch = __toESM(require("micromatch")), import_node_path = require("node:path"), import_node_os = require("node:os"), import_node_child_process = require("node:child_process"), import_node_crypto = require("node:crypto");
|
|
29
29
|
const build = async (options) => {
|
|
30
30
|
const sourceDir = options.dir ?? ".", promises = [], buildOptions = (0, import_static.loadTamaguiBuildConfigSync)(options.tamaguiOptions), targets = options.target === "both" || !options.target ? ["web", "native"] : [options.target], webTamaguiOptions = {
|
|
31
31
|
...buildOptions,
|
|
@@ -58,6 +58,26 @@ const build = async (options) => {
|
|
|
58
58
|
}
|
|
59
59
|
filePlatforms.length > 0 && fileToTargets.set(sourcePath, filePlatforms);
|
|
60
60
|
}
|
|
61
|
+
const stats = {
|
|
62
|
+
filesProcessed: 0,
|
|
63
|
+
optimized: 0,
|
|
64
|
+
flattened: 0,
|
|
65
|
+
styled: 0,
|
|
66
|
+
found: 0
|
|
67
|
+
}, trackedFiles = [], restoreDir = options.runCommand ? (0, import_node_path.join)((0, import_node_os.tmpdir)(), `tamagui-restore-${process.pid}`) : null;
|
|
68
|
+
restoreDir && await (0, import_fs_extra.mkdir)(restoreDir, { recursive: !0 });
|
|
69
|
+
const trackFile = async (filePath) => {
|
|
70
|
+
if (!restoreDir) return;
|
|
71
|
+
const hash = (0, import_node_crypto.createHash)("md5").update(filePath).digest("hex"), backupPath = (0, import_node_path.join)(restoreDir, hash);
|
|
72
|
+
await (0, import_fs_extra.copyFile)(filePath, backupPath), trackedFiles.push({ path: filePath, hardlinkPath: backupPath, mtimeAfterWrite: 0 });
|
|
73
|
+
}, recordMtime = async (filePath) => {
|
|
74
|
+
if (!restoreDir) return;
|
|
75
|
+
const tracked = trackedFiles.find((t) => t.path === filePath);
|
|
76
|
+
if (tracked) {
|
|
77
|
+
const fileStat = await (0, import_fs_extra.stat)(filePath);
|
|
78
|
+
tracked.mtimeAfterWrite = fileStat.mtimeMs;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
61
81
|
for (const [sourcePath, filePlatforms] of fileToTargets)
|
|
62
82
|
promises.push(
|
|
63
83
|
(async () => {
|
|
@@ -78,9 +98,15 @@ const build = async (options) => {
|
|
|
78
98
|
shouldPrintDebug: options.debug || !1
|
|
79
99
|
});
|
|
80
100
|
if (out) {
|
|
101
|
+
stats.filesProcessed++;
|
|
81
102
|
const cssName = "_" + (0, import_node_path.basename)(sourcePath, (0, import_node_path.extname)(sourcePath)), stylePath = (0, import_node_path.join)((0, import_node_path.dirname)(sourcePath), cssName + ".css"), code = `import "./${cssName}.css"
|
|
82
103
|
${out.js}`;
|
|
83
|
-
await (0, import_fs_extra.writeFile)(sourcePath, code, "utf-8"), await (0, import_fs_extra.writeFile)(stylePath, out.styles, "utf-8")
|
|
104
|
+
await trackFile(sourcePath), await (0, import_fs_extra.writeFile)(sourcePath, code, "utf-8"), await recordMtime(sourcePath), await (0, import_fs_extra.writeFile)(stylePath, out.styles, "utf-8"), trackedFiles.push({
|
|
105
|
+
path: stylePath,
|
|
106
|
+
hardlinkPath: "",
|
|
107
|
+
// Empty means delete on restore
|
|
108
|
+
mtimeAfterWrite: (await (0, import_fs_extra.stat)(stylePath)).mtimeMs
|
|
109
|
+
});
|
|
84
110
|
}
|
|
85
111
|
}
|
|
86
112
|
if (filePlatforms.includes("native")) {
|
|
@@ -96,10 +122,57 @@ ${out.js}`;
|
|
|
96
122
|
let nativeOutputPath = sourcePath;
|
|
97
123
|
!/\.(web|native|ios|android)\.(tsx|jsx)$/.test(
|
|
98
124
|
sourcePath
|
|
99
|
-
) && filePlatforms.length > 1 && (nativeOutputPath = sourcePath.replace(/\.(tsx|jsx)$/, ".native.$1")), nativeOut.code && await (0, import_fs_extra.writeFile)(nativeOutputPath, nativeOut.code, "utf-8")
|
|
125
|
+
) && filePlatforms.length > 1 && (nativeOutputPath = sourcePath.replace(/\.(tsx|jsx)$/, ".native.$1")), nativeOut.code && ((nativeOutputPath === sourcePath || filePlatforms.length === 1) && await trackFile(nativeOutputPath), await (0, import_fs_extra.writeFile)(nativeOutputPath, nativeOut.code, "utf-8"), await recordMtime(nativeOutputPath), nativeOutputPath !== sourcePath && filePlatforms.length > 1 && trackedFiles.push({
|
|
126
|
+
path: nativeOutputPath,
|
|
127
|
+
hardlinkPath: "",
|
|
128
|
+
// Empty = delete on restore
|
|
129
|
+
mtimeAfterWrite: (await (0, import_fs_extra.stat)(nativeOutputPath)).mtimeMs
|
|
130
|
+
}));
|
|
100
131
|
}
|
|
101
132
|
})()
|
|
102
133
|
);
|
|
103
|
-
await Promise.all(promises)
|
|
134
|
+
if (await Promise.all(promises), options.expectOptimizations !== void 0) {
|
|
135
|
+
const totalOptimizations = stats.optimized + stats.flattened;
|
|
136
|
+
totalOptimizations < options.expectOptimizations && (console.error(
|
|
137
|
+
`
|
|
138
|
+
Expected at least ${options.expectOptimizations} optimizations but only got ${totalOptimizations}`
|
|
139
|
+
), console.error(`Stats: ${JSON.stringify(stats, null, 2)}`), process.exit(1)), console.info(
|
|
140
|
+
`
|
|
141
|
+
\u2713 Met optimization target: ${totalOptimizations} >= ${options.expectOptimizations}`
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
if (options.runCommand && options.runCommand.length > 0) {
|
|
145
|
+
const command = options.runCommand.join(" ");
|
|
146
|
+
console.info(`
|
|
147
|
+
Running: ${command}
|
|
148
|
+
`);
|
|
149
|
+
try {
|
|
150
|
+
(0, import_node_child_process.execSync)(command, { stdio: "inherit" });
|
|
151
|
+
} catch (err) {
|
|
152
|
+
console.error(`
|
|
153
|
+
Command failed with exit code ${err.status || 1}`), process.exitCode = err.status || 1;
|
|
154
|
+
} finally {
|
|
155
|
+
await restoreFiles(trackedFiles, restoreDir);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return { stats, trackedFiles };
|
|
104
159
|
};
|
|
160
|
+
async function restoreFiles(trackedFiles, restoreDir) {
|
|
161
|
+
if (!restoreDir || trackedFiles.length === 0) return;
|
|
162
|
+
console.info(`
|
|
163
|
+
Restoring ${trackedFiles.length} files...`);
|
|
164
|
+
let restored = 0, skipped = 0, deleted = 0;
|
|
165
|
+
for (const tracked of trackedFiles)
|
|
166
|
+
try {
|
|
167
|
+
const currentStat = await (0, import_fs_extra.stat)(tracked.path).catch(() => null);
|
|
168
|
+
if (currentStat && currentStat.mtimeMs !== tracked.mtimeAfterWrite) {
|
|
169
|
+
console.warn(` Skipping ${tracked.path} - modified during build`), skipped++;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
tracked.hardlinkPath === "" ? (await (0, import_fs_extra.rm)(tracked.path, { force: !0 }), deleted++) : (await (0, import_fs_extra.copyFile)(tracked.hardlinkPath, tracked.path), restored++);
|
|
173
|
+
} catch (err) {
|
|
174
|
+
console.warn(` Failed to restore ${tracked.path}: ${err.message}`), skipped++;
|
|
175
|
+
}
|
|
176
|
+
await (0, import_fs_extra.rm)(restoreDir, { recursive: !0, force: !0 }), console.info(` Restored: ${restored}, Deleted: ${deleted}, Skipped: ${skipped}`);
|
|
177
|
+
}
|
|
105
178
|
//# sourceMappingURL=build.js.map
|
package/dist/build.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/build.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMO,4BAEP,kBAAqB,8BACrB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["chokidar", "MicroMatch"]
|
|
6
6
|
}
|
package/dist/cli.cjs
CHANGED
|
@@ -137,16 +137,24 @@ const COMMAND_MAP = {
|
|
|
137
137
|
},
|
|
138
138
|
build: {
|
|
139
139
|
shorthands: ["b"],
|
|
140
|
-
description: "Use to pre-build a Tamagui component directory",
|
|
140
|
+
description: "Use to pre-build a Tamagui component directory. Use -- to run a command after optimization, then auto-restore files.",
|
|
141
141
|
flags: {
|
|
142
142
|
"--help": Boolean,
|
|
143
143
|
"--debug": Boolean,
|
|
144
144
|
"--verbose": Boolean,
|
|
145
145
|
"--target": String,
|
|
146
146
|
"--include": String,
|
|
147
|
-
"--exclude": String
|
|
147
|
+
"--exclude": String,
|
|
148
|
+
"--expect-optimizations": Number
|
|
148
149
|
},
|
|
149
150
|
async run() {
|
|
151
|
+
const argvSeparatorIdx = process.argv.indexOf("--");
|
|
152
|
+
let runCommand;
|
|
153
|
+
if (argvSeparatorIdx !== -1) {
|
|
154
|
+
runCommand = process.argv.slice(argvSeparatorIdx + 1);
|
|
155
|
+
const argsBeforeSeparator = process.argv.slice(0, argvSeparatorIdx);
|
|
156
|
+
process.argv = argsBeforeSeparator;
|
|
157
|
+
}
|
|
150
158
|
const {
|
|
151
159
|
_,
|
|
152
160
|
...flags2
|
|
@@ -162,9 +170,10 @@ const COMMAND_MAP = {
|
|
|
162
170
|
...options,
|
|
163
171
|
dir,
|
|
164
172
|
include: flags2["--include"],
|
|
165
|
-
// Default to building both web and native
|
|
166
173
|
target: flags2["--target"] || "both",
|
|
167
|
-
exclude: flags2["--exclude"]
|
|
174
|
+
exclude: flags2["--exclude"],
|
|
175
|
+
expectOptimizations: flags2["--expect-optimizations"],
|
|
176
|
+
runCommand
|
|
168
177
|
});
|
|
169
178
|
}
|
|
170
179
|
},
|
package/dist/cli.js
CHANGED
|
@@ -107,16 +107,24 @@ const COMMAND_MAP = {
|
|
|
107
107
|
},
|
|
108
108
|
build: {
|
|
109
109
|
shorthands: ["b"],
|
|
110
|
-
description: "Use to pre-build a Tamagui component directory",
|
|
110
|
+
description: "Use to pre-build a Tamagui component directory. Use -- to run a command after optimization, then auto-restore files.",
|
|
111
111
|
flags: {
|
|
112
112
|
"--help": Boolean,
|
|
113
113
|
"--debug": Boolean,
|
|
114
114
|
"--verbose": Boolean,
|
|
115
115
|
"--target": String,
|
|
116
116
|
"--include": String,
|
|
117
|
-
"--exclude": String
|
|
117
|
+
"--exclude": String,
|
|
118
|
+
"--expect-optimizations": Number
|
|
118
119
|
},
|
|
119
120
|
async run() {
|
|
121
|
+
const argvSeparatorIdx = process.argv.indexOf("--");
|
|
122
|
+
let runCommand;
|
|
123
|
+
if (argvSeparatorIdx !== -1) {
|
|
124
|
+
runCommand = process.argv.slice(argvSeparatorIdx + 1);
|
|
125
|
+
const argsBeforeSeparator = process.argv.slice(0, argvSeparatorIdx);
|
|
126
|
+
process.argv = argsBeforeSeparator;
|
|
127
|
+
}
|
|
120
128
|
const { _, ...flags2 } = (0, import_arg.default)(this.flags), [_command, dir] = _, { build } = require("./build.cjs"), options = await (0, import_utils.getOptions)({
|
|
121
129
|
debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : !0 : !1
|
|
122
130
|
});
|
|
@@ -124,9 +132,10 @@ const COMMAND_MAP = {
|
|
|
124
132
|
...options,
|
|
125
133
|
dir,
|
|
126
134
|
include: flags2["--include"],
|
|
127
|
-
// Default to building both web and native
|
|
128
135
|
target: flags2["--target"] || "both",
|
|
129
|
-
exclude: flags2["--exclude"]
|
|
136
|
+
exclude: flags2["--exclude"],
|
|
137
|
+
expectOptimizations: flags2["--expect-optimizations"],
|
|
138
|
+
runCommand
|
|
130
139
|
});
|
|
131
140
|
}
|
|
132
141
|
},
|
package/dist/cli.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA,iBAAgB,yBAChB,eAAkB,2BAElB,aAAsC,kBACtC,eAAuC,oBACvC,gBAAuC;AAGtC,CAAC,QAAQ,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACjC,UAAQ,GAAG,GAAG,MAAM;AAClB,iCAAW,GACX,QAAQ,KAAK;AAAA,EACf,CAAC;AACH,CAAC;AAED,MAAM,cAAc;AAAA,EAClB,OAAO;AAAA,IACL,aAAa;AAAA,IACb,YAAY,CAAC;AAAA,IACb,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,MAAM,MAAM;AACV,YAAM,EAAE,GAAG,GAAGA,OAAM,QAAI,WAAAC,SAAI,KAAK,KAAK,GAChC,UAAU,UAAM,yBAAW;AAAA,QAC/B,OAAOD,OAAM,SAAS,IAAKA,OAAM,WAAW,IAAI,YAAY,KAAQ;AAAA,QACpE,oBAAoB;AAAA,MACtB,CAAC;AAED,gBAAM,yBAAU,QAAQ,MAAM,IAAI;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,YAAY,CAAC;AAAA,IACb,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,MAAM,MAAM;AACV,YAAM,EAAE,GAAG,GAAGA,OAAM,QAAI,WAAAC,SAAI,KAAK,KAAK,GAChC,UAAU,UAAM,yBAAW;AAAA,QAC/B,OAAOD,OAAM,SAAS,IAAKA,OAAM,WAAW,IAAI,YAAY,KAAQ;AAAA,QACpE,oBAAoB;AAAA,MACtB,CAAC;AACD,cAAQ,IAAI,sBAAsB,KAClC,UAAM,2BAAY;AAAA,QAChB,GAAG,QAAQ;AAAA,QACX,UAAU;AAAA,MACZ,CAAC;AAGD,YAAM,EAAE,eAAe,IAAI,QAAQ,mBAAmB,GAChD,EAAE,KAAK,IAAI,QAAQ,WAAW;AACpC,YAAM,eAAe;AAAA,QACnB,GAAG;AAAA,QACH,QAAQ,KAAK,QAAQ,MAAM,QAAQ,WAAW;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,mBAAmB;AAAA,IACjB,YAAY,CAAC,IAAI;AAAA,IACjB,aAAa;AAAA,IACb,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,MAAM,MAAM;AACV,YAAM,EAAE,GAAG,GAAGA,OAAM,QAAI,WAAAC,SAAI,KAAK,KAAK,GAChC,UAAU,UAAM,yBAAW;AAAA,QAC/B,OAAOD,OAAM,SAAS,IAAKA,OAAM,WAAW,IAAI,YAAY,KAAQ;AAAA,MACtE,CAAC,GACK,CAAC,MAAM,QAAQ,OAAO,IAAI;AAChC,UAAI,CAAC,UAAU,CAAC;AACd,cAAM,IAAI;AAAA,UACR,iEAAiE,MAAM,cAAc,OAAO;AAAA,QAC9F;AAGF,YAAM,EAAE,gBAAgB,qBAAqB,IAAI,QAAQ,0BAA0B;AAEnF,UAAI;AACF,cAAM,YAAY,MAAM,eAAe,MAAM;AAE7C,QAAI,aACF,MAAM,qBAAqB,QAAQ,MAAM,QAAQ,SAAS,SAAS,GACnE,QAAQ,KAAK,oCAAoC,OAAO,EAAE,KAE1D,QAAQ,KAAK,CAAC;AAAA,MAElB,SAAS,KAAK;AACZ,gBAAQ,MAAM,4BAA4B,GAAG,EAAE;AAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK;AAAA,IACH,YAAY,CAAC,GAAG;AAAA,IAChB,aAAa,iEAAiE,iCAAsB;AAAA,MAClG;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA,MAAM,MAAM;AACV,YAAM,EAAE,GAAG,GAAGA,OAAM,QAAI,WAAAC,SAAI,KAAK,KAAK,GAChC,EAAE,wBAAwB,IAAI,QAAQ,OAAO,GAC7C,CAAC,KAAK,MAAM,IAAI,IAAI;AAI1B,YAAM,wBAAwB,MAAM,IAAI;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,YAAY,CAAC,GAAG;AAAA,IAChB,aAAa;AAAA,IACb,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["flags", "arg", "command", "definition", "chalk"]
|
|
6
6
|
}
|
package/dist/cli.native.js
CHANGED
|
@@ -87,7 +87,7 @@ var COMMAND_MAP = {
|
|
|
87
87
|
}
|
|
88
88
|
},
|
|
89
89
|
"generate-themes": {
|
|
90
|
-
shorthands: [
|
|
90
|
+
shorthands: [],
|
|
91
91
|
description: "Use to pre-build your themes",
|
|
92
92
|
flags: {
|
|
93
93
|
"--help": Boolean,
|
|
@@ -118,7 +118,7 @@ var COMMAND_MAP = {
|
|
|
118
118
|
}
|
|
119
119
|
},
|
|
120
120
|
add: {
|
|
121
|
-
shorthands: [
|
|
121
|
+
shorthands: [],
|
|
122
122
|
description: `Use to add fonts and icons to your monorepo. Supported types: ${import_add.generatedPackageTypes.join(", ")}`,
|
|
123
123
|
flags: {
|
|
124
124
|
"--help": Boolean,
|
|
@@ -138,7 +138,7 @@ var COMMAND_MAP = {
|
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
build: {
|
|
141
|
-
shorthands: [
|
|
141
|
+
shorthands: [],
|
|
142
142
|
description: "Use to pre-build a Tamagui component directory",
|
|
143
143
|
flags: {
|
|
144
144
|
"--help": Boolean,
|
|
@@ -170,38 +170,8 @@ var COMMAND_MAP = {
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
},
|
|
173
|
-
// update: {
|
|
174
|
-
// shorthands: [],
|
|
175
|
-
// description: `Update all tamagui packages within a monorepo`,
|
|
176
|
-
// flags: {},
|
|
177
|
-
// async run() {
|
|
178
|
-
// const { update } = await import('./update')
|
|
179
|
-
// await update()
|
|
180
|
-
// },
|
|
181
|
-
// },
|
|
182
|
-
"update-template": {
|
|
183
|
-
shorthands: ["ut"],
|
|
184
|
-
description: "Used to update your git repo with the source template. (e.g. Takeout)",
|
|
185
|
-
flags: {
|
|
186
|
-
"--help": Boolean,
|
|
187
|
-
"--template-repo": String,
|
|
188
|
-
"--ignored-patterns": String
|
|
189
|
-
},
|
|
190
|
-
async run() {
|
|
191
|
-
var _flags_ignoredpatterns,
|
|
192
|
-
{
|
|
193
|
-
_,
|
|
194
|
-
...flags2
|
|
195
|
-
} = (0, import_arg.default)(this.flags),
|
|
196
|
-
{
|
|
197
|
-
updateTemplate
|
|
198
|
-
} = require("./update-template.native.js");
|
|
199
|
-
if (!flags2["--template-repo"]) throw new Error("--template-repo is required");
|
|
200
|
-
await updateTemplate(flags2["--template-repo"], (_flags_ignoredpatterns = flags2["--ignored-patterns"]) === null || _flags_ignoredpatterns === void 0 ? void 0 : _flags_ignoredpatterns.split(" "));
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
173
|
"generate-prompt": {
|
|
204
|
-
shorthands: [
|
|
174
|
+
shorthands: [],
|
|
205
175
|
description: "Generate an LLM-friendly markdown file from your Tamagui config",
|
|
206
176
|
flags: {
|
|
207
177
|
"--help": Boolean,
|
package/dist/cli.native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_arg","__toESM","require","import_chalk","import_add","import_utils","import_static","forEach","_","process","on","disposeAll","exit","COMMAND_MAP","check","description","shorthands","flags","Boolean","run","flags2","default","options","getOptions","debug","loadTamaguiOptions","checkDeps","paths","root","generate","env","TAMAGUI_KEEP_THEMES","loadTamagui","tamaguiOptions","platform","generatePrompt","join","output","dotDir","_cmd","inPath","outPath","Error","generateThemes","writeGeneratedThemes","generated","console","info","err","error","add","generatedPackageTypes","installGeneratedPackage","cmd","type","path","build","String","_command","dir","include","target","exclude","
|
|
1
|
+
{"version":3,"names":["import_arg","__toESM","require","import_chalk","import_add","import_utils","import_static","forEach","_","process","on","disposeAll","exit","COMMAND_MAP","check","description","shorthands","flags","Boolean","run","flags2","default","options","getOptions","debug","loadTamaguiOptions","checkDeps","paths","root","generate","env","TAMAGUI_KEEP_THEMES","loadTamagui","tamaguiOptions","platform","generatePrompt","join","output","dotDir","_cmd","inPath","outPath","Error","generateThemes","writeGeneratedThemes","generated","console","info","err","error","add","generatedPackageTypes","installGeneratedPackage","cmd","type","path","build","String","_command","dir","include","target","exclude","commandEntries","Object","keys","flatMap","command2","definition2","entries","map","commands","fromEntries","command","permissive","version","key","warn","yellow","definition","main","param","k","v","name","cmdFlags","JSON","stringify"],"sources":["../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cli",
|
|
3
|
-
"version": "1.139.
|
|
3
|
+
"version": "1.139.3",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"clean:build": "tamagui-build clean:build"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@tamagui/create-theme": "1.139.
|
|
27
|
-
"@tamagui/generate-themes": "1.139.
|
|
28
|
-
"@tamagui/static": "1.139.
|
|
29
|
-
"@tamagui/types": "1.139.
|
|
30
|
-
"@tamagui/vite-plugin": "1.139.
|
|
26
|
+
"@tamagui/create-theme": "1.139.3",
|
|
27
|
+
"@tamagui/generate-themes": "1.139.3",
|
|
28
|
+
"@tamagui/static": "1.139.3",
|
|
29
|
+
"@tamagui/types": "1.139.3",
|
|
30
|
+
"@tamagui/vite-plugin": "1.139.3",
|
|
31
31
|
"arg": "^5.0.2",
|
|
32
32
|
"chalk": "^4.1.2",
|
|
33
33
|
"change-case": "^4.1.2",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"url": "^0.11.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@tamagui/build": "1.139.
|
|
49
|
+
"@tamagui/build": "1.139.3",
|
|
50
50
|
"@types/chokidar": "^2.1.3",
|
|
51
51
|
"@types/marked": "^5.0.0"
|
|
52
52
|
}
|
package/src/build.ts
CHANGED
|
@@ -7,9 +7,31 @@ import {
|
|
|
7
7
|
} from '@tamagui/static'
|
|
8
8
|
import type { CLIResolvedOptions, TamaguiOptions } from '@tamagui/types'
|
|
9
9
|
import chokidar from 'chokidar'
|
|
10
|
-
import { readFile, writeFile } from 'fs-extra'
|
|
10
|
+
import { copyFile, mkdir, readFile, rm, stat, writeFile } from 'fs-extra'
|
|
11
11
|
import MicroMatch from 'micromatch'
|
|
12
12
|
import { basename, dirname, extname, join, resolve } from 'node:path'
|
|
13
|
+
import { tmpdir } from 'node:os'
|
|
14
|
+
import { execSync } from 'node:child_process'
|
|
15
|
+
import { createHash } from 'node:crypto'
|
|
16
|
+
|
|
17
|
+
export type BuildStats = {
|
|
18
|
+
filesProcessed: number
|
|
19
|
+
optimized: number
|
|
20
|
+
flattened: number
|
|
21
|
+
styled: number
|
|
22
|
+
found: number
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type TrackedFile = {
|
|
26
|
+
path: string
|
|
27
|
+
hardlinkPath: string
|
|
28
|
+
mtimeAfterWrite: number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type BuildResult = {
|
|
32
|
+
stats: BuildStats
|
|
33
|
+
trackedFiles: TrackedFile[]
|
|
34
|
+
}
|
|
13
35
|
|
|
14
36
|
export const build = async (
|
|
15
37
|
options: CLIResolvedOptions & {
|
|
@@ -17,8 +39,10 @@ export const build = async (
|
|
|
17
39
|
dir?: string
|
|
18
40
|
include?: string
|
|
19
41
|
exclude?: string
|
|
42
|
+
expectOptimizations?: number
|
|
43
|
+
runCommand?: string[]
|
|
20
44
|
}
|
|
21
|
-
) => {
|
|
45
|
+
): Promise<BuildResult> => {
|
|
22
46
|
const sourceDir = options.dir ?? '.'
|
|
23
47
|
const promises: Promise<void>[] = []
|
|
24
48
|
|
|
@@ -116,6 +140,46 @@ export const build = async (
|
|
|
116
140
|
}
|
|
117
141
|
}
|
|
118
142
|
|
|
143
|
+
// Track overall statistics
|
|
144
|
+
const stats: BuildStats = {
|
|
145
|
+
filesProcessed: 0,
|
|
146
|
+
optimized: 0,
|
|
147
|
+
flattened: 0,
|
|
148
|
+
styled: 0,
|
|
149
|
+
found: 0,
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Track files for restoration (when using --run)
|
|
153
|
+
const trackedFiles: TrackedFile[] = []
|
|
154
|
+
const restoreDir = options.runCommand
|
|
155
|
+
? join(tmpdir(), `tamagui-restore-${process.pid}`)
|
|
156
|
+
: null
|
|
157
|
+
|
|
158
|
+
if (restoreDir) {
|
|
159
|
+
await mkdir(restoreDir, { recursive: true })
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Helper to backup a file before modifying it
|
|
163
|
+
const trackFile = async (filePath: string): Promise<void> => {
|
|
164
|
+
if (!restoreDir) return
|
|
165
|
+
const hash = createHash('md5').update(filePath).digest('hex')
|
|
166
|
+
const backupPath = join(restoreDir, hash)
|
|
167
|
+
// Use copy instead of hardlink - hardlinks share content, so modifying
|
|
168
|
+
// the original would also modify the "backup"
|
|
169
|
+
await copyFile(filePath, backupPath)
|
|
170
|
+
trackedFiles.push({ path: filePath, hardlinkPath: backupPath, mtimeAfterWrite: 0 })
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Helper to record mtime after writing
|
|
174
|
+
const recordMtime = async (filePath: string): Promise<void> => {
|
|
175
|
+
if (!restoreDir) return
|
|
176
|
+
const tracked = trackedFiles.find((t) => t.path === filePath)
|
|
177
|
+
if (tracked) {
|
|
178
|
+
const fileStat = await stat(filePath)
|
|
179
|
+
tracked.mtimeAfterWrite = fileStat.mtimeMs
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
119
183
|
// Process all files
|
|
120
184
|
for (const [sourcePath, filePlatforms] of fileToTargets) {
|
|
121
185
|
promises.push(
|
|
@@ -145,13 +209,27 @@ export const build = async (
|
|
|
145
209
|
})
|
|
146
210
|
|
|
147
211
|
if (out) {
|
|
212
|
+
stats.filesProcessed++
|
|
213
|
+
|
|
148
214
|
const cssName = '_' + basename(sourcePath, extname(sourcePath))
|
|
149
215
|
const stylePath = join(dirname(sourcePath), cssName + '.css')
|
|
150
216
|
const code = `import "./${cssName}.css"\n${out.js}`
|
|
151
217
|
|
|
218
|
+
// Track original file before modifying
|
|
219
|
+
await trackFile(sourcePath)
|
|
220
|
+
|
|
152
221
|
// Write web output
|
|
153
222
|
await writeFile(sourcePath, code, 'utf-8')
|
|
223
|
+
await recordMtime(sourcePath)
|
|
224
|
+
|
|
225
|
+
// CSS file is new, track for cleanup
|
|
154
226
|
await writeFile(stylePath, out.styles, 'utf-8')
|
|
227
|
+
// Note: CSS files are new (generated), we'll delete them on restore
|
|
228
|
+
trackedFiles.push({
|
|
229
|
+
path: stylePath,
|
|
230
|
+
hardlinkPath: '', // Empty means delete on restore
|
|
231
|
+
mtimeAfterWrite: (await stat(stylePath)).mtimeMs,
|
|
232
|
+
})
|
|
155
233
|
}
|
|
156
234
|
}
|
|
157
235
|
|
|
@@ -184,7 +262,21 @@ export const build = async (
|
|
|
184
262
|
}
|
|
185
263
|
|
|
186
264
|
if (nativeOut.code) {
|
|
265
|
+
// Track original if overwriting existing file
|
|
266
|
+
if (nativeOutputPath === sourcePath || filePlatforms.length === 1) {
|
|
267
|
+
await trackFile(nativeOutputPath)
|
|
268
|
+
}
|
|
187
269
|
await writeFile(nativeOutputPath, nativeOut.code, 'utf-8')
|
|
270
|
+
await recordMtime(nativeOutputPath)
|
|
271
|
+
|
|
272
|
+
// If creating new .native.tsx, track for deletion
|
|
273
|
+
if (nativeOutputPath !== sourcePath && filePlatforms.length > 1) {
|
|
274
|
+
trackedFiles.push({
|
|
275
|
+
path: nativeOutputPath,
|
|
276
|
+
hardlinkPath: '', // Empty = delete on restore
|
|
277
|
+
mtimeAfterWrite: (await stat(nativeOutputPath)).mtimeMs,
|
|
278
|
+
})
|
|
279
|
+
}
|
|
188
280
|
}
|
|
189
281
|
}
|
|
190
282
|
})()
|
|
@@ -192,4 +284,80 @@ export const build = async (
|
|
|
192
284
|
}
|
|
193
285
|
|
|
194
286
|
await Promise.all(promises)
|
|
287
|
+
|
|
288
|
+
// Verify expected optimizations if specified
|
|
289
|
+
if (options.expectOptimizations !== undefined) {
|
|
290
|
+
const totalOptimizations = stats.optimized + stats.flattened
|
|
291
|
+
if (totalOptimizations < options.expectOptimizations) {
|
|
292
|
+
console.error(
|
|
293
|
+
`\nExpected at least ${options.expectOptimizations} optimizations but only got ${totalOptimizations}`
|
|
294
|
+
)
|
|
295
|
+
console.error(`Stats: ${JSON.stringify(stats, null, 2)}`)
|
|
296
|
+
process.exit(1)
|
|
297
|
+
}
|
|
298
|
+
console.info(
|
|
299
|
+
`\n✓ Met optimization target: ${totalOptimizations} >= ${options.expectOptimizations}`
|
|
300
|
+
)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// If a command was provided, run it and then restore files
|
|
304
|
+
if (options.runCommand && options.runCommand.length > 0) {
|
|
305
|
+
const command = options.runCommand.join(' ')
|
|
306
|
+
console.info(`\nRunning: ${command}\n`)
|
|
307
|
+
|
|
308
|
+
try {
|
|
309
|
+
execSync(command, { stdio: 'inherit' })
|
|
310
|
+
} catch (err: any) {
|
|
311
|
+
console.error(`\nCommand failed with exit code ${err.status || 1}`)
|
|
312
|
+
process.exitCode = err.status || 1
|
|
313
|
+
} finally {
|
|
314
|
+
// Always restore files
|
|
315
|
+
await restoreFiles(trackedFiles, restoreDir)
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return { stats, trackedFiles }
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
async function restoreFiles(
|
|
323
|
+
trackedFiles: TrackedFile[],
|
|
324
|
+
restoreDir: string | null
|
|
325
|
+
): Promise<void> {
|
|
326
|
+
if (!restoreDir || trackedFiles.length === 0) return
|
|
327
|
+
|
|
328
|
+
console.info(`\nRestoring ${trackedFiles.length} files...`)
|
|
329
|
+
let restored = 0
|
|
330
|
+
let skipped = 0
|
|
331
|
+
let deleted = 0
|
|
332
|
+
|
|
333
|
+
for (const tracked of trackedFiles) {
|
|
334
|
+
try {
|
|
335
|
+
const currentStat = await stat(tracked.path).catch(() => null)
|
|
336
|
+
|
|
337
|
+
// Check if file was modified during command execution
|
|
338
|
+
if (currentStat && currentStat.mtimeMs !== tracked.mtimeAfterWrite) {
|
|
339
|
+
console.warn(` Skipping ${tracked.path} - modified during build`)
|
|
340
|
+
skipped++
|
|
341
|
+
continue
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (tracked.hardlinkPath === '') {
|
|
345
|
+
// This was a generated file, delete it
|
|
346
|
+
await rm(tracked.path, { force: true })
|
|
347
|
+
deleted++
|
|
348
|
+
} else {
|
|
349
|
+
// Restore from hardlink
|
|
350
|
+
await copyFile(tracked.hardlinkPath, tracked.path)
|
|
351
|
+
restored++
|
|
352
|
+
}
|
|
353
|
+
} catch (err: any) {
|
|
354
|
+
console.warn(` Failed to restore ${tracked.path}: ${err.message}`)
|
|
355
|
+
skipped++
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Clean up tmpdir
|
|
360
|
+
await rm(restoreDir, { recursive: true, force: true })
|
|
361
|
+
|
|
362
|
+
console.info(` Restored: ${restored}, Deleted: ${deleted}, Skipped: ${skipped}`)
|
|
195
363
|
}
|
package/src/cli.ts
CHANGED
|
@@ -124,7 +124,7 @@ const COMMAND_MAP = {
|
|
|
124
124
|
|
|
125
125
|
build: {
|
|
126
126
|
shorthands: ['b'],
|
|
127
|
-
description: `Use to pre-build a Tamagui component directory
|
|
127
|
+
description: `Use to pre-build a Tamagui component directory. Use -- to run a command after optimization, then auto-restore files.`,
|
|
128
128
|
flags: {
|
|
129
129
|
'--help': Boolean,
|
|
130
130
|
'--debug': Boolean,
|
|
@@ -132,10 +132,24 @@ const COMMAND_MAP = {
|
|
|
132
132
|
'--target': String,
|
|
133
133
|
'--include': String,
|
|
134
134
|
'--exclude': String,
|
|
135
|
+
'--expect-optimizations': Number,
|
|
135
136
|
},
|
|
136
137
|
async run() {
|
|
138
|
+
// Find -- separator in process.argv
|
|
139
|
+
const argvSeparatorIdx = process.argv.indexOf('--')
|
|
140
|
+
let runCommand: string[] | undefined
|
|
141
|
+
|
|
142
|
+
if (argvSeparatorIdx !== -1) {
|
|
143
|
+
// Everything after -- is the command to run
|
|
144
|
+
runCommand = process.argv.slice(argvSeparatorIdx + 1)
|
|
145
|
+
// Parse only args before --
|
|
146
|
+
const argsBeforeSeparator = process.argv.slice(0, argvSeparatorIdx)
|
|
147
|
+
process.argv = argsBeforeSeparator
|
|
148
|
+
}
|
|
149
|
+
|
|
137
150
|
const { _, ...flags } = arg(this.flags)
|
|
138
151
|
const [_command, dir] = _
|
|
152
|
+
|
|
139
153
|
const { build } = require('./build.cjs')
|
|
140
154
|
const options = await getOptions({
|
|
141
155
|
debug: flags['--debug'] ? (flags['--verbose'] ? 'verbose' : true) : false,
|
|
@@ -144,9 +158,10 @@ const COMMAND_MAP = {
|
|
|
144
158
|
...options,
|
|
145
159
|
dir,
|
|
146
160
|
include: flags['--include'],
|
|
147
|
-
// Default to building both web and native
|
|
148
161
|
target: (flags['--target'] as 'web' | 'native' | 'both' | undefined) || 'both',
|
|
149
162
|
exclude: flags['--exclude'],
|
|
163
|
+
expectOptimizations: flags['--expect-optimizations'],
|
|
164
|
+
runCommand,
|
|
150
165
|
})
|
|
151
166
|
},
|
|
152
167
|
},
|
package/types/build.d.ts
CHANGED
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import type { CLIResolvedOptions } from '@tamagui/types';
|
|
2
|
+
export type BuildStats = {
|
|
3
|
+
filesProcessed: number;
|
|
4
|
+
optimized: number;
|
|
5
|
+
flattened: number;
|
|
6
|
+
styled: number;
|
|
7
|
+
found: number;
|
|
8
|
+
};
|
|
9
|
+
export type TrackedFile = {
|
|
10
|
+
path: string;
|
|
11
|
+
hardlinkPath: string;
|
|
12
|
+
mtimeAfterWrite: number;
|
|
13
|
+
};
|
|
14
|
+
export type BuildResult = {
|
|
15
|
+
stats: BuildStats;
|
|
16
|
+
trackedFiles: TrackedFile[];
|
|
17
|
+
};
|
|
2
18
|
export declare const build: (options: CLIResolvedOptions & {
|
|
3
19
|
target?: "web" | "native" | "both";
|
|
4
20
|
dir?: string;
|
|
5
21
|
include?: string;
|
|
6
22
|
exclude?: string;
|
|
7
|
-
|
|
23
|
+
expectOptimizations?: number;
|
|
24
|
+
runCommand?: string[];
|
|
25
|
+
}) => Promise<BuildResult>;
|
|
8
26
|
//# sourceMappingURL=build.d.ts.map
|
package/types/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,gBAAgB,CAAA;AASxE,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAA;IACjB,YAAY,EAAE,WAAW,EAAE,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,KAAK,GAChB,SAAS,kBAAkB,GAAG;IAC5B,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,KACA,OAAO,CAAC,WAAW,CAmRrB,CAAA"}
|