react-apps-ui 1.0.12 ā 1.0.13
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/index.js +49 -11
- package/package.json +1 -1
- package/src/index.ts +56 -11
package/dist/index.js
CHANGED
|
@@ -17,6 +17,32 @@ program
|
|
|
17
17
|
.name("react-apps-ui")
|
|
18
18
|
.description("Add high-quality components to your React Native app")
|
|
19
19
|
.version("1.0.0");
|
|
20
|
+
// Helper to filter out packages that are already in package.json
|
|
21
|
+
function filterMissingDeps(deps) {
|
|
22
|
+
const packageJsonPath = path_1.default.join(process.cwd(), "package.json");
|
|
23
|
+
if (!fs_1.default.existsSync(packageJsonPath))
|
|
24
|
+
return deps;
|
|
25
|
+
try {
|
|
26
|
+
const pkg = JSON.parse(fs_1.default.readFileSync(packageJsonPath, "utf-8"));
|
|
27
|
+
const installed = {
|
|
28
|
+
...(pkg.dependencies || {}),
|
|
29
|
+
...(pkg.devDependencies || {}),
|
|
30
|
+
};
|
|
31
|
+
return deps.filter((dep) => {
|
|
32
|
+
let pkgName = dep;
|
|
33
|
+
if (dep.startsWith("@")) {
|
|
34
|
+
pkgName = "@" + dep.slice(1).split("@")[0];
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
pkgName = dep.split("@")[0];
|
|
38
|
+
}
|
|
39
|
+
return !installed[pkgName];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return deps;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
20
46
|
// --- THE INIT COMMAND ---
|
|
21
47
|
// 1. Define the foundational architecture for each engine
|
|
22
48
|
const BASE_DEPS = {
|
|
@@ -124,18 +150,24 @@ program
|
|
|
124
150
|
}
|
|
125
151
|
}
|
|
126
152
|
}
|
|
127
|
-
// 5. INSTALL FOUNDATIONAL NPM DEPENDENCIES
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
153
|
+
// 5. INSTALL FOUNDATIONAL NPM DEPENDENCIES (Skipping already installed)
|
|
154
|
+
const missingBaseDeps = filterMissingDeps(setup.npm);
|
|
155
|
+
if (missingBaseDeps.length > 0) {
|
|
156
|
+
const depList = missingBaseDeps.join(" ");
|
|
157
|
+
console.log(chalk_1.default.blue(`\nš¦ Installing missing foundational NPM dependencies: ${depList}...`));
|
|
131
158
|
try {
|
|
132
|
-
(0, child_process_1.execSync)(`npm install ${depList}`, {
|
|
159
|
+
(0, child_process_1.execSync)(`npm install ${depList} --legacy-peer-deps`, {
|
|
160
|
+
stdio: "inherit",
|
|
161
|
+
});
|
|
133
162
|
console.log(chalk_1.default.green("ā Dependencies installed successfully."));
|
|
134
163
|
}
|
|
135
164
|
catch (err) {
|
|
136
165
|
console.log(chalk_1.default.red("ā Failed to install dependencies. You may need to install them manually."));
|
|
137
166
|
}
|
|
138
167
|
}
|
|
168
|
+
else {
|
|
169
|
+
console.log(chalk_1.default.green("\nā All foundational NPM dependencies are already installed. Skipping."));
|
|
170
|
+
}
|
|
139
171
|
console.log(chalk_1.default.blue("\nš Initialization complete!"));
|
|
140
172
|
console.log(chalk_1.default.dim("Wrap your app in the <ThemeProvider> to get started."));
|
|
141
173
|
}
|
|
@@ -211,7 +243,7 @@ program
|
|
|
211
243
|
}
|
|
212
244
|
}
|
|
213
245
|
}
|
|
214
|
-
// 5. INSTALL NPM DEPENDENCIES
|
|
246
|
+
// 5. INSTALL NPM DEPENDENCIES (Skipping already installed)
|
|
215
247
|
const depsToInstall = new Set();
|
|
216
248
|
// Collect all dependencies from the components we just added
|
|
217
249
|
for (const compName of componentsToAdd) {
|
|
@@ -220,18 +252,24 @@ program
|
|
|
220
252
|
compData.dependencies.forEach((dep) => depsToInstall.add(dep));
|
|
221
253
|
}
|
|
222
254
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
255
|
+
// Filter out anything already installed in user's package.json
|
|
256
|
+
const missingDeps = filterMissingDeps(Array.from(depsToInstall));
|
|
257
|
+
if (missingDeps.length > 0) {
|
|
258
|
+
const depList = missingDeps.join(" ");
|
|
259
|
+
console.log(chalk_1.default.blue(`\nš¦ Installing missing NPM dependencies: ${depList}...`));
|
|
226
260
|
try {
|
|
227
|
-
|
|
228
|
-
|
|
261
|
+
(0, child_process_1.execSync)(`npm install ${depList} --legacy-peer-deps`, {
|
|
262
|
+
stdio: "inherit",
|
|
263
|
+
});
|
|
229
264
|
console.log(chalk_1.default.green("ā Dependencies installed successfully."));
|
|
230
265
|
}
|
|
231
266
|
catch (err) {
|
|
232
267
|
console.log(chalk_1.default.red("ā Failed to install dependencies. You may need to install them manually."));
|
|
233
268
|
}
|
|
234
269
|
}
|
|
270
|
+
else if (depsToInstall.size > 0) {
|
|
271
|
+
console.log(chalk_1.default.green("\nā Required NPM dependencies are already installed. Skipping."));
|
|
272
|
+
}
|
|
235
273
|
console.log(chalk_1.default.blue("\nš Components installed successfully!"));
|
|
236
274
|
}
|
|
237
275
|
catch (error) {
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -17,6 +17,32 @@ program
|
|
|
17
17
|
.description("Add high-quality components to your React Native app")
|
|
18
18
|
.version("1.0.0");
|
|
19
19
|
|
|
20
|
+
// Helper to filter out packages that are already in package.json
|
|
21
|
+
function filterMissingDeps(deps: string[]): string[] {
|
|
22
|
+
const packageJsonPath = path.join(process.cwd(), "package.json");
|
|
23
|
+
if (!fs.existsSync(packageJsonPath)) return deps;
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
|
|
27
|
+
const installed = {
|
|
28
|
+
...(pkg.dependencies || {}),
|
|
29
|
+
...(pkg.devDependencies || {}),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
return deps.filter((dep) => {
|
|
33
|
+
let pkgName = dep;
|
|
34
|
+
if (dep.startsWith("@")) {
|
|
35
|
+
pkgName = "@" + dep.slice(1).split("@")[0];
|
|
36
|
+
} else {
|
|
37
|
+
pkgName = dep.split("@")[0];
|
|
38
|
+
}
|
|
39
|
+
return !installed[pkgName];
|
|
40
|
+
});
|
|
41
|
+
} catch {
|
|
42
|
+
return deps;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
20
46
|
// --- THE INIT COMMAND ---
|
|
21
47
|
|
|
22
48
|
// 1. Define the foundational architecture for each engine
|
|
@@ -184,16 +210,20 @@ program
|
|
|
184
210
|
}
|
|
185
211
|
}
|
|
186
212
|
|
|
187
|
-
// 5. INSTALL FOUNDATIONAL NPM DEPENDENCIES
|
|
188
|
-
|
|
189
|
-
|
|
213
|
+
// 5. INSTALL FOUNDATIONAL NPM DEPENDENCIES (Skipping already installed)
|
|
214
|
+
const missingBaseDeps = filterMissingDeps(setup.npm);
|
|
215
|
+
|
|
216
|
+
if (missingBaseDeps.length > 0) {
|
|
217
|
+
const depList = missingBaseDeps.join(" ");
|
|
190
218
|
console.log(
|
|
191
219
|
chalk.blue(
|
|
192
|
-
`\nš¦ Installing foundational NPM dependencies: ${depList}...`,
|
|
220
|
+
`\nš¦ Installing missing foundational NPM dependencies: ${depList}...`,
|
|
193
221
|
),
|
|
194
222
|
);
|
|
195
223
|
try {
|
|
196
|
-
execSync(`npm install ${depList}`, {
|
|
224
|
+
execSync(`npm install ${depList} --legacy-peer-deps`, {
|
|
225
|
+
stdio: "inherit",
|
|
226
|
+
});
|
|
197
227
|
console.log(
|
|
198
228
|
chalk.green("ā Dependencies installed successfully."),
|
|
199
229
|
);
|
|
@@ -204,6 +234,12 @@ program
|
|
|
204
234
|
),
|
|
205
235
|
);
|
|
206
236
|
}
|
|
237
|
+
} else {
|
|
238
|
+
console.log(
|
|
239
|
+
chalk.green(
|
|
240
|
+
"\nā All foundational NPM dependencies are already installed. Skipping.",
|
|
241
|
+
),
|
|
242
|
+
);
|
|
207
243
|
}
|
|
208
244
|
|
|
209
245
|
console.log(chalk.blue("\nš Initialization complete!"));
|
|
@@ -331,7 +367,7 @@ program
|
|
|
331
367
|
}
|
|
332
368
|
}
|
|
333
369
|
|
|
334
|
-
// 5. INSTALL NPM DEPENDENCIES
|
|
370
|
+
// 5. INSTALL NPM DEPENDENCIES (Skipping already installed)
|
|
335
371
|
const depsToInstall = new Set<string>();
|
|
336
372
|
|
|
337
373
|
// Collect all dependencies from the components we just added
|
|
@@ -344,16 +380,19 @@ program
|
|
|
344
380
|
}
|
|
345
381
|
}
|
|
346
382
|
|
|
347
|
-
|
|
348
|
-
|
|
383
|
+
// Filter out anything already installed in user's package.json
|
|
384
|
+
const missingDeps = filterMissingDeps(Array.from(depsToInstall));
|
|
385
|
+
if (missingDeps.length > 0) {
|
|
386
|
+
const depList = missingDeps.join(" ");
|
|
349
387
|
console.log(
|
|
350
388
|
chalk.blue(
|
|
351
|
-
`\nš¦ Installing NPM dependencies: ${depList}...`,
|
|
389
|
+
`\nš¦ Installing missing NPM dependencies: ${depList}...`,
|
|
352
390
|
),
|
|
353
391
|
);
|
|
354
392
|
try {
|
|
355
|
-
|
|
356
|
-
|
|
393
|
+
execSync(`npm install ${depList} --legacy-peer-deps`, {
|
|
394
|
+
stdio: "inherit",
|
|
395
|
+
});
|
|
357
396
|
console.log(
|
|
358
397
|
chalk.green("ā Dependencies installed successfully."),
|
|
359
398
|
);
|
|
@@ -364,6 +403,12 @@ program
|
|
|
364
403
|
),
|
|
365
404
|
);
|
|
366
405
|
}
|
|
406
|
+
} else if (depsToInstall.size > 0) {
|
|
407
|
+
console.log(
|
|
408
|
+
chalk.green(
|
|
409
|
+
"\nā Required NPM dependencies are already installed. Skipping.",
|
|
410
|
+
),
|
|
411
|
+
);
|
|
367
412
|
}
|
|
368
413
|
|
|
369
414
|
console.log(chalk.blue("\nš Components installed successfully!"));
|