mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-06 14:09:25 +08:00
* fix: add license code * fix: bug * fix: bug * fix: upgrade * fix: improve * chore: add copyright information to the file header * fix: d.ts bug * fix: bug * fix: e2e bug * fix: merge main --------- Co-authored-by: chenos <chenlinxh@gmail.com>
77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
/**
|
|
* 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 { Command } = require('commander');
|
|
const { resolve, isAbsolute } = require('path');
|
|
const { run, isDev } = require('../util');
|
|
const fs = require('fs-extra');
|
|
const glob = require('fast-glob');
|
|
|
|
/**
|
|
*
|
|
* @param {Command} cli
|
|
*/
|
|
module.exports = (cli) => {
|
|
cli
|
|
.command('doc')
|
|
.argument('[dev|build|serve]')
|
|
.argument('[packages]')
|
|
.option('--lang [lang]')
|
|
.allowUnknownOption()
|
|
.action((command, pkg, options) => {
|
|
if (!isDev()) {
|
|
return;
|
|
}
|
|
|
|
// 指定项目目录
|
|
let cwd = process.cwd();
|
|
if (command === undefined && pkg === undefined) {
|
|
command = 'dev';
|
|
} else if (!['dev', 'build', 'serve'].includes(command) && pkg === undefined) {
|
|
pkg = command;
|
|
command = 'dev';
|
|
cwd = resolve(process.cwd(), 'packages', pkg);
|
|
}
|
|
if (pkg !== undefined) {
|
|
process.env.APP_ROOT = `packages/${pkg}`;
|
|
}
|
|
|
|
// 删除 tmp 目录
|
|
const tmpDir = glob.sync(
|
|
['.dumi/tmp', '.dumi/tmp-production', 'packages/*/*/.dumi/tmp', 'packages/*/*.dumi/tmp-production'],
|
|
{
|
|
cwd: process.cwd(),
|
|
onlyDirectories: true,
|
|
},
|
|
);
|
|
tmpDir.forEach((dir) => {
|
|
fs.removeSync(dir);
|
|
});
|
|
|
|
// 设置语言
|
|
process.env.DOC_LANG = options.lang || 'en-US';
|
|
|
|
if (command === 'serve') {
|
|
// 如果是多语言,则需要进入内部,如果不是多语言,则直接进入 docs/dist
|
|
let dir = resolve(cwd, 'docs/dist', process.env.DOC_LANG);
|
|
if (!fs.existsSync(dir)) {
|
|
dir = resolve(cwd, 'docs/dist');
|
|
}
|
|
run('serve', [dir]);
|
|
} else {
|
|
run('dumi', [command], {
|
|
env: {
|
|
APP_ROOT: process.env.APP_ROOT || './packages/core/client',
|
|
DOC_LANG: process.env.DOC_LANG,
|
|
},
|
|
});
|
|
}
|
|
});
|
|
};
|