@codemoreira/esad 1.4.6-4 → 1.4.6-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/bin/esad.js CHANGED
@@ -36,13 +36,40 @@ program
36
36
 
37
37
  // --- COMMAND: esad host ---
38
38
  program
39
- .command('host <subcommand>')
40
- .description('Manage the Host App (Auto-Syncs config, runs android/ios)')
39
+ .command('host [subcommand]')
40
+ .description('Manage the Host App (subcommands: dev, android, ios)')
41
41
  .action(async (sub) => {
42
42
  await hostCommand(sub);
43
43
  process.exit(0);
44
44
  });
45
45
 
46
+ // --- COMMAND: esad android ---
47
+ program
48
+ .command('android')
49
+ .description('Run the Host App on Android')
50
+ .action(async () => {
51
+ await hostCommand('android');
52
+ process.exit(0);
53
+ });
54
+
55
+ // --- COMMAND: esad ios ---
56
+ program
57
+ .command('ios')
58
+ .description('Run the Host App on iOS')
59
+ .action(async () => {
60
+ await hostCommand('ios');
61
+ process.exit(0);
62
+ });
63
+
64
+ // --- COMMAND: esad start ---
65
+ program
66
+ .command('start')
67
+ .description('Alias for esad host dev')
68
+ .action(async () => {
69
+ await hostCommand('dev');
70
+ process.exit(0);
71
+ });
72
+
46
73
  // --- COMMAND: esad create-module ---
47
74
  program
48
75
  .command('create-module <module-name>')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemoreira/esad",
3
- "version": "1.4.6-4",
3
+ "version": "1.4.6-5",
4
4
  "description": "Easy Super App Development - Zero-Config CLI and DevTools for React Native Module Federation",
5
5
  "main": "src/plugin/index.js",
6
6
  "types": "./src/plugin/index.d.ts",
@@ -52,7 +52,8 @@ module.exports = async (options) => {
52
52
  '--platform', platform,
53
53
  '--dev', 'false',
54
54
  '--bundle-output', bundleOutput,
55
- '--assets-dest', path.dirname(bundleOutput)
55
+ '--assets-dest', path.dirname(bundleOutput),
56
+ '--reset-cache'
56
57
  ], cwd);
57
58
 
58
59
  console.log(chalk.green(`\n✅ Build complete! Assets generated in build/ directory.`));
@@ -84,7 +84,8 @@ module.exports = async (options) => {
84
84
  '--platform', platform,
85
85
  '--dev', 'false',
86
86
  '--bundle-output', bundleOutput,
87
- '--assets-dest', path.dirname(bundleOutput)
87
+ '--assets-dest', path.dirname(bundleOutput),
88
+ '--reset-cache'
88
89
  ], cwd);
89
90
  } catch (err) {
90
91
  console.error(chalk.red(`❌ Build failed.`));
@@ -7,12 +7,7 @@ const readline = require('readline');
7
7
  const { getWorkspaceConfig } = require('../utils/config');
8
8
  const { prepareNative } = require('../utils/scaffold');
9
9
 
10
- const rl = readline.createInterface({
11
- input: process.stdin,
12
- output: process.stdout
13
- });
14
-
15
- const askQuestion = (query) => new Promise((resolve) => rl.question(query, resolve));
10
+ const askQuestion = (query, rl) => new Promise((resolve) => rl.question(query, resolve));
16
11
 
17
12
  /**
18
13
  * Check if a port is in use
@@ -28,6 +23,12 @@ const isPortInUse = (port) => new Promise((resolve) => {
28
23
  });
29
24
 
30
25
  module.exports = async (subcommand) => {
26
+ const rl = readline.createInterface({
27
+ input: process.stdin,
28
+ output: process.stdout
29
+ });
30
+
31
+ if (!subcommand) subcommand = 'dev';
31
32
  let cwd = process.cwd();
32
33
  let pkgPath = path.join(cwd, 'package.json');
33
34
 
@@ -64,7 +65,7 @@ module.exports = async (subcommand) => {
64
65
  console.log(`[b] Bundler Only`);
65
66
  console.log(`[c] Cancel`);
66
67
 
67
- const choice = (await askQuestion(`\nSelect platform: `)).toLowerCase();
68
+ const choice = (await askQuestion(`\nSelect platform: `, rl)).toLowerCase();
68
69
 
69
70
  if (choice === 'c') {
70
71
  console.log(`\n❌ Cancelled.`);
@@ -86,13 +87,13 @@ module.exports = async (subcommand) => {
86
87
  if (shouldStartBundler && choice !== 'c') {
87
88
  console.log(`\n🛠️ Starting Rspack Bundler in a new window...`);
88
89
  if (process.platform === 'win32') {
89
- spawn('cmd', ['/c', 'start', '/D', cwd, 'npx', 'react-native', 'webpack-start'], {
90
+ spawn('cmd', ['/c', 'start', '/D', cwd, 'npx', 'react-native', 'start', '--reset-cache'], {
90
91
  detached: true,
91
92
  stdio: 'ignore',
92
93
  shell: true
93
94
  }).unref();
94
95
  } else {
95
- spawn('npx', ['react-native', 'webpack-start'], {
96
+ spawn('npx', ['react-native', 'start', '--reset-cache'], {
96
97
  cwd,
97
98
  detached: true,
98
99
  stdio: 'inherit',
@@ -139,13 +140,16 @@ module.exports = async (subcommand) => {
139
140
  // Other subcommands (android, ios directly)
140
141
  try {
141
142
  if (subcommand === 'android') {
143
+ console.log(`🤖 Compiling and launching on Android...`);
142
144
  await runProcess('npx', ['expo', 'run:android', '--no-bundler'], cwd);
143
145
  } else if (subcommand === 'ios') {
146
+ console.log(`🍎 Compiling and launching on iOS...`);
144
147
  await runProcess('npx', ['expo', 'run:ios', '--no-bundler'], cwd);
145
148
  }
146
149
  } catch (err) {
147
150
  console.error(`❌ Error running host command: ${err.message}`);
151
+ } finally {
152
+ rl.close();
148
153
  }
149
- rl.close();
150
154
  }
151
155
  };