From 582f0647e3badf3377ce48d53558d085da69bb05 Mon Sep 17 00:00:00 2001 From: chenos Date: Wed, 23 Apr 2025 19:32:49 +0800 Subject: [PATCH] chore: update-deps --- packages/core/cli/src/commands/index.js | 1 + packages/core/cli/src/commands/update-deps.js | 68 +++++++++++++++++++ packages/core/cli/src/commands/upgrade.js | 47 +------------ packages/core/create-nocobase-app/src/cli.js | 2 +- .../core/create-nocobase-app/src/generator.js | 2 +- 5 files changed, 73 insertions(+), 47 deletions(-) create mode 100644 packages/core/cli/src/commands/update-deps.js diff --git a/packages/core/cli/src/commands/index.js b/packages/core/cli/src/commands/index.js index 3647d07250..97a685f668 100644 --- a/packages/core/cli/src/commands/index.js +++ b/packages/core/cli/src/commands/index.js @@ -30,6 +30,7 @@ module.exports = (cli) => { require('./test')(cli); require('./test-coverage')(cli); require('./umi')(cli); + require('./update-deps')(cli); require('./upgrade')(cli); require('./postinstall')(cli); require('./pkg')(cli); diff --git a/packages/core/cli/src/commands/update-deps.js b/packages/core/cli/src/commands/update-deps.js new file mode 100644 index 0000000000..8fde310a69 --- /dev/null +++ b/packages/core/cli/src/commands/update-deps.js @@ -0,0 +1,68 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +const chalk = require('chalk'); +const { Command } = require('commander'); +const { resolve } = require('path'); +const { run, promptForTs, runAppCommand, hasCorePackages, downloadPro, hasTsNode, checkDBDialect } = require('../util'); +const { existsSync, rmSync } = require('fs'); +const { readJSON, writeJSON } = require('fs-extra'); +const deepmerge = require('deepmerge'); + +const rmAppDir = () => { + // If ts-node is not installed, do not do the following + const appDevDir = resolve(process.cwd(), './storage/.app-dev'); + if (existsSync(appDevDir)) { + rmSync(appDevDir, { recursive: true, force: true }); + } +}; + +/** + * + * @param {Command} cli + */ +module.exports = (cli) => { + cli + .command('update-deps') + .allowUnknownOption() + .action(async () => { + if (hasCorePackages() || !hasTsNode()) { + await downloadPro(); + return; + } + const pkg = require('../../package.json'); + let distTag = 'latest'; + if (pkg.version.includes('alpha')) { + distTag = 'alpha'; + } else if (pkg.version.includes('beta')) { + distTag = 'beta'; + } + const { stdout } = await run('npm', ['info', `@nocobase/cli@${distTag}`, 'version'], { + stdio: 'pipe', + }); + if (pkg.version === stdout) { + await downloadPro(); + rmAppDir(); + return; + } + const descPath = resolve(process.cwd(), 'package.json'); + const descJson = await readJSON(descPath, 'utf8'); + await run('yarn', ['add', `@nocobase/cli@${distTag}`, '-W']); + if (descJson['devDependencies']?.['@nocobase/devtools']) { + await run('yarn', ['add', `@nocobase/devtools@${distTag}`, '-W', '-D']); + } + const sourcePath = resolve(__dirname, '../../templates/create-app-package.json'); + const sourceJson = await readJSON(sourcePath, 'utf8'); + const json = deepmerge(descJson, sourceJson); + await writeJSON(descPath, json, { spaces: 2, encoding: 'utf8' }); + await run('yarn', ['install']); + await downloadPro(); + rmAppDir(); + }); +}; diff --git a/packages/core/cli/src/commands/upgrade.js b/packages/core/cli/src/commands/upgrade.js index accd77a865..925a818003 100644 --- a/packages/core/cli/src/commands/upgrade.js +++ b/packages/core/cli/src/commands/upgrade.js @@ -39,52 +39,9 @@ module.exports = (cli) => { .action(async (options) => { checkDBDialect(); if (hasTsNode()) promptForTs(); - if (hasCorePackages()) { - // await run('yarn', ['install']); - await downloadPro(); - await runAppCommand('upgrade'); - return; + if (!options.skipCodeUpdate) { + await run('nocobase', ['update-deps']); } - if (options.skipCodeUpdate) { - await downloadPro(); - await runAppCommand('upgrade'); - return; - } - // await runAppCommand('upgrade'); - if (!hasTsNode()) { - await downloadPro(); - await runAppCommand('upgrade'); - return; - } - const rmAppDir = () => { - // If ts-node is not installed, do not do the following - const appDevDir = resolve(process.cwd(), './storage/.app-dev'); - if (existsSync(appDevDir)) { - rmSync(appDevDir, { recursive: true, force: true }); - } - }; - const pkg = require('../../package.json'); - let distTag = 'latest'; - if (pkg.version.includes('alpha')) { - distTag = 'alpha'; - } else if (pkg.version.includes('beta')) { - distTag = 'beta'; - } - // get latest version - const { stdout } = await run('npm', ['info', `@nocobase/cli@${distTag}`, 'version'], { - stdio: 'pipe', - }); - if (pkg.version === stdout) { - await downloadPro(); - await runAppCommand('upgrade'); - await rmAppDir(); - return; - } - await run('yarn', ['add', `@nocobase/cli@${distTag}`, `@nocobase/devtools@${distTag}`, '-W']); - await updatePackage(); - await run('yarn', ['install']); - await downloadPro(); await runAppCommand('upgrade'); - await rmAppDir(); }); }; diff --git a/packages/core/create-nocobase-app/src/cli.js b/packages/core/create-nocobase-app/src/cli.js index 1abad655b0..28496f7c6b 100644 --- a/packages/core/create-nocobase-app/src/cli.js +++ b/packages/core/create-nocobase-app/src/cli.js @@ -21,7 +21,7 @@ cli .option('--quickstart', 'quickstart app creation') .option('--skip-dev-dependencies') .option('-a, --all-db-dialect', 'install all database dialect dependencies') - .option('-d, --db-dialect ', 'database dialect, current support mysql/postgres', 'postgres') + .option('-d, --db-dialect [dbDialect]', 'database dialect, current support postgres, mysql, mariadb, kingbase') .option('-e, --env ', 'environment variables write into .env file', concat, []) .description('create a new application') .action(async (name, options) => { diff --git a/packages/core/create-nocobase-app/src/generator.js b/packages/core/create-nocobase-app/src/generator.js index 66a882b835..dffd553997 100644 --- a/packages/core/create-nocobase-app/src/generator.js +++ b/packages/core/create-nocobase-app/src/generator.js @@ -61,7 +61,7 @@ class AppGenerator extends Generator { checkDialect() { const dialect = this.args.dbDialect; - const supportDialects = ['mysql', 'mariadb', 'postgres']; + const supportDialects = ['mysql', 'mariadb', 'postgres', 'kingbase']; if (!supportDialects.includes(dialect)) { console.log( `dialect ${chalk.red(dialect)} is not supported, currently supported dialects are ${chalk.green(