@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 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": "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",
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": "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",
4
+ "mappings": "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",
5
5
  "names": ["flags", "arg", "command", "definition", "chalk"]
6
6
  }
@@ -87,7 +87,7 @@ var COMMAND_MAP = {
87
87
  }
88
88
  },
89
89
  "generate-themes": {
90
- shorthands: ["gt"],
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: ["a"],
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: ["b"],
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: ["gp"],
174
+ shorthands: [],
205
175
  description: "Generate an LLM-friendly markdown file from your Tamagui config",
206
176
  flags: {
207
177
  "--help": Boolean,
@@ -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","_flags_ignoredpatterns","updateTemplate","split","commandEntries","Object","keys","flatMap","command2","definition2","entries","map","commands","fromEntries","command","permissive","version","key","warn","yellow","definition","main","param","k","v","name","cmdFlags"],"sources":["../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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.1",
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.1",
27
- "@tamagui/generate-themes": "1.139.1",
28
- "@tamagui/static": "1.139.1",
29
- "@tamagui/types": "1.139.1",
30
- "@tamagui/vite-plugin": "1.139.1",
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.1",
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
- }) => Promise<void>;
23
+ expectOptimizations?: number;
24
+ runCommand?: string[];
25
+ }) => Promise<BuildResult>;
8
26
  //# sourceMappingURL=build.d.ts.map
@@ -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;AAMxE,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;CACjB,kBA+KF,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"}