Skip to content

Commit 2518ea5

Browse files
committed
优化依赖安装逻辑,支持单体和多包管理,更新临时应用的 package.json 配置
1 parent 09a7d01 commit 2518ea5

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

packages/cli/src/commands/dev.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,22 @@ export async function dev(schemaPath: string, options: DevOptions) {
6868
}
6969

7070
// Install dependencies
71-
console.log(chalk.blue('📦 Installing dependencies...'));
72-
console.log(chalk.dim(' This may take a moment on first run...'));
73-
try {
74-
execSync('npm install --silent --prefer-offline', {
75-
cwd: tmpDir,
76-
stdio: 'inherit',
77-
});
78-
console.log(chalk.green('✓ Dependencies installed'));
79-
} catch {
80-
throw new Error('Failed to install dependencies. Please check your internet connection and try again.');
71+
const isMonorepo = existsSync(join(cwd, 'pnpm-workspace.yaml'));
72+
73+
if (isMonorepo) {
74+
console.log(chalk.blue('📦 Detected monorepo - using root node_modules'));
75+
} else {
76+
console.log(chalk.blue('📦 Installing dependencies...'));
77+
console.log(chalk.dim(' This may take a moment on first run...'));
78+
try {
79+
execSync('npm install --silent --prefer-offline', {
80+
cwd: tmpDir,
81+
stdio: 'inherit',
82+
});
83+
console.log(chalk.green('✓ Dependencies installed'));
84+
} catch {
85+
throw new Error('Failed to install dependencies. Please check your internet connection and try again.');
86+
}
8187
}
8288

8389
console.log(chalk.green('✓ Schema loaded successfully'));

packages/cli/src/utils/app-generator.ts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync } from 'fs';
1+
import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync, existsSync } from 'fs';
22
import { join } from 'path';
33
import chalk from 'chalk';
44
import * as yaml from 'js-yaml';
@@ -295,27 +295,35 @@ export default {
295295

296296
writeFileSync(join(tmpDir, 'postcss.config.js'), postcssConfig);
297297

298+
const cwd = process.cwd();
299+
const isMonorepo = existsSync(join(cwd, 'pnpm-workspace.yaml'));
300+
298301
// Create package.json
302+
const baseDependencies = {
303+
react: '^18.3.1',
304+
'react-dom': '^18.3.1',
305+
'@object-ui/react': '^0.1.0',
306+
'@object-ui/components': '^0.1.0',
307+
};
308+
309+
const baseDevDependencies = {
310+
'@types/react': '^18.3.12',
311+
'@types/react-dom': '^18.3.1',
312+
'@vitejs/plugin-react': '^4.2.1',
313+
autoprefixer: '^10.4.23',
314+
postcss: '^8.5.6',
315+
tailwindcss: '^3.4.19',
316+
typescript: '~5.7.3',
317+
vite: '^5.0.0',
318+
};
319+
299320
const packageJson = {
300321
name: 'objectui-temp-app',
301322
private: true,
302323
type: 'module',
303-
dependencies: {
304-
react: '^18.3.1',
305-
'react-dom': '^18.3.1',
306-
'@object-ui/react': '^0.1.0',
307-
'@object-ui/components': '^0.1.0',
308-
},
309-
devDependencies: {
310-
'@types/react': '^18.3.12',
311-
'@types/react-dom': '^18.3.1',
312-
'@vitejs/plugin-react': '^4.2.1',
313-
autoprefixer: '^10.4.23',
314-
postcss: '^8.5.6',
315-
tailwindcss: '^3.4.19',
316-
typescript: '~5.7.3',
317-
vite: '^5.0.0',
318-
},
324+
// In monorepo, we use root node_modules, so we don't need dependencies here
325+
dependencies: isMonorepo ? {} : baseDependencies,
326+
devDependencies: isMonorepo ? {} : baseDevDependencies,
319327
};
320328

321329
writeFileSync(join(tmpDir, 'package.json'), JSON.stringify(packageJson, null, 2));

0 commit comments

Comments
 (0)