mirror of
https://github.com/nocobase/nocobase
synced 2024-11-17 10:36:57 +00:00
573cde0a21
* refactor: remove useless code * feat: should always show user variable * style: optimize style of variable input * feat: change maxDepth of user varialbe to 3 * refactor: migrate getFieldDefaultValue to SchemaSettings.tsx * feat: support to parse variables * feat: support to parse array fields * refactor: make testing more stable * chore: fix CI * feat: support to parse current user * fix: fix tests * feat: support to register variable * feat: support to parse "$context" * refactor: remove useless code * fix: fix build * fix: fix build * test: make stable * docs: add doc * fix: fix T-1267 * fix: fix T-1268 * fix: fix T-1269 * fix: fix T-1271 * fix: fix T-1274 * refactor: improve code * feat(variable): support local variable * fix: fix T-1280 * refactor: close T-881 * refactor: remove useLazyLoadAssociation * fix: fix T-1289,T-1290 * fix: fix T-1296 * refactor(AssignedField): replace user variable * refactor: extract useBaseVariable * refactor(AssignedField): replace variables * feat(useVariables): support to use array as local variables * refactor: improve variables (T-1295) * feat: limit user choice (T-1297) * fix: fix T-1305 * refactor: extract as SchemaSettings.DataScope * refactor: improve linkage rules * refactor: improve linkage rules of Action * chore: fix build * refactor: improve data scope of association fields * chore: fix build * feat: select limit * refactor: use VariableInput to replace other * fix: fix can not input * fix(AssignedField): fix cannot close variables list * test: fix errors * refactor: migrate to new file * fix: uniq * fix: filter empty values * fix: transform variables value * fix: should sum numbers (T-1330) * fix: fix Select (T-1337) * refactor: use useMemo * refactor: use hooks * refactor: use hooks * refactor: use hooks * refactor: remove useless code * refactor: rename `$form` to `$nForm` and `$record` to `$nRecord` * fix: fix T-1334 * refactor(LinkageRuleActionGroup): use hooks * refactor(FormButtonLinkageRuleAction): use hooks * refactor: add type * fix: avoid crashing * refactor: rename `$date` to `$nDate` * fix: fix T-1348 * perf: avoid duplicate requests * test: fix error * fix: fix T-1355 * fix: fix T-1355 * fix: fix T-1345 * fix: fix T-1346 * refactor(useVariableOptions): replace query with parameter * fix: fix T-1335 * chore: fix build * fix: fix T-1453 * refactor: remove useless code * fix: fix T-1447 * fix: should update when seting default value * fix: fix T-1454 * chore(eslint): ignore docker * fix: fix T-1440 * refactor: use hooks * fix: fix T-1332 * fix(defaultValue): should use Select mode * fix(defaultValue): fix Checkbox * refactor: rename and comment * refactor: rename file name and hook name * feat(subForm): support lazy load association fields * fix: filter empty values * fix(defaultValue): schema type of Checkbox should be void * fix: fix T-1479 * fix: fix T-1491 * fix(ToOneNester): should use RecordProvider * fix: fix T-1493 * chore: add comment * fix: fix T-1495 * chore: fix build * test: make pass * fix: fix T-1503 * fix: fix T-1504 * fix: fix transformVariableValue * fix: disable unsupport options * refactor(useVariableOptions): add noDisabled params * fix: data scope support to select to-many fields * chore: add comment * refactor: improve default value * refactor: extract as useIsAllowToSetDefaultValue * fix: should not support to set default value in edit mode * fix: only the default values for sub-forms and sub-tables are valid * fix: limit default value of association fields * fix: fix '$nForm' variable * fix: allow all inherit chain * fix: optimize default value * fix: optimize json field * fix(currentObject): avoid error * fix: should not show variable string * fix: active fields * fix: avoid errors * feat: support special case * fix: fix CI * chore: fix build * fix: json * refactor: rename flag name * fix: fix T-1559 * fix: fix T-1515 * fix: avoid crash * fix: fix T-1520 * fix: fix T-1521 * fix: fix T-1523 * fix: fix T-1563 * fix: fix T-1565 * fix: fix T-1525 * fix: fix T-1524 * fix: fix T-1603 * fix: fix T-1332 * fix: fix T-1559 * fix: fix T-1602 * fix: fix T-1608 * fix: fix T-1612 T-1609 * fix: fix T-1681 * fix: fix T-1711 * fix: fix T-1713 * fix: fix T-1680 * chore: close T-1550 * fix: fix T-1507 * chore: avoid crashing * fix: fix T-1557 * perf: close T-1726 * fix: fix T-1727 * fix: fix T-1741 * fix: fix T-1740 * chore(workflow): compact * chore: should not to support to set default value in assign field values * perf: compat and perf (T-1736) * fix: fix T-1872 * fix: fix T-1877 * fix: fix quarter variables * chore: add README * chore: front-end should not depend on back-end code * chore: should disable all variable options if no field is selected * chore: should be a leaf if it has no children * chore: fix build error * fix: compat $form * fix: compat $form * chore: fix build * chore: fix build * fix: typeError: Cannot read properties of undefined (reading 'template') * chore: fix test * chore: add test * fix: fix T-2072 * chore: optimize eslint * perf: reduce number of requests * fix: fix JSON * test: fix error * fix(e2e): avoid error --------- Co-authored-by: chenos <chenlinxh@gmail.com>
129 lines
3.4 KiB
TypeScript
129 lines
3.4 KiB
TypeScript
import react from '@vitejs/plugin-react';
|
|
import fg from 'fast-glob';
|
|
import fs from 'fs-extra';
|
|
import path from 'path';
|
|
import { build as tsupBuild } from 'tsup';
|
|
import { build as viteBuild } from 'vite';
|
|
import { libInjectCss } from 'vite-plugin-lib-inject-css';
|
|
|
|
import { globExcludeFiles } from './constant';
|
|
import { PkgLog, UserConfig } from './utils';
|
|
|
|
export async function buildClient(cwd: string, userConfig: UserConfig, sourcemap: boolean = false, log: PkgLog) {
|
|
log('build client');
|
|
const cwdWin = cwd.replaceAll(/\\/g, '/');
|
|
const cwdUnix = cwd.replaceAll(/\//g, '\\');
|
|
const external = function (id: string) {
|
|
if (id.startsWith('.') || id.startsWith(cwdUnix) || id.startsWith(cwdWin)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
await buildEsm(cwd, userConfig, sourcemap, external, log);
|
|
await buildLib(cwd, userConfig, sourcemap, external, log);
|
|
await buildLocale(cwd, userConfig, log);
|
|
}
|
|
|
|
type External = (id: string) => boolean;
|
|
|
|
export function buildEsm(cwd: string, userConfig: UserConfig, sourcemap: boolean, external: External, log: PkgLog) {
|
|
log('build client esm');
|
|
const entry = path.join(cwd, 'src/index.ts').replaceAll(/\\/g, '/');
|
|
const outDir = path.resolve(cwd, 'es');
|
|
return viteBuild(
|
|
userConfig.modifyViteConfig({
|
|
mode: 'production',
|
|
define: {
|
|
'process.env.NODE_ENV': JSON.stringify('production'),
|
|
'process.env.__TEST__': false,
|
|
},
|
|
build: {
|
|
minify: false,
|
|
outDir,
|
|
cssCodeSplit: true,
|
|
emptyOutDir: true,
|
|
sourcemap,
|
|
lib: {
|
|
entry,
|
|
formats: ['es'],
|
|
fileName: 'index',
|
|
},
|
|
target: ['es2015', 'edge88', 'firefox78', 'chrome87', 'safari14'],
|
|
rollupOptions: {
|
|
cache: true,
|
|
treeshake: true,
|
|
external,
|
|
},
|
|
},
|
|
plugins: [react(), libInjectCss()],
|
|
}),
|
|
);
|
|
}
|
|
|
|
export async function buildLib(
|
|
cwd: string,
|
|
userConfig: UserConfig,
|
|
sourcemap: boolean,
|
|
external: External,
|
|
log: PkgLog,
|
|
) {
|
|
log('build client lib');
|
|
const outDir = path.resolve(cwd, 'lib');
|
|
const esDir = path.resolve(cwd, 'es');
|
|
const entry = path.join(esDir, 'index.ts');
|
|
|
|
fs.removeSync(entry);
|
|
fs.linkSync(path.join(cwd, 'es/index.mjs'), entry);
|
|
|
|
await viteBuild(
|
|
userConfig.modifyViteConfig({
|
|
mode: 'production',
|
|
esbuild: {
|
|
format: 'cjs',
|
|
},
|
|
build: {
|
|
outDir,
|
|
minify: false,
|
|
sourcemap,
|
|
lib: {
|
|
entry: path.join(cwd, 'es/index.ts'),
|
|
formats: ['cjs'],
|
|
fileName: 'index',
|
|
},
|
|
rollupOptions: {
|
|
external,
|
|
},
|
|
},
|
|
}),
|
|
);
|
|
|
|
fs.removeSync(entry);
|
|
|
|
const css = fg.sync('*.css', { cwd: esDir, absolute: true });
|
|
css.forEach((file) => {
|
|
fs.copySync(file, path.join(outDir, path.basename(file)));
|
|
});
|
|
}
|
|
|
|
export function buildLocale(cwd: string, userConfig: UserConfig, log: PkgLog) {
|
|
log('build client locale');
|
|
|
|
const entry = fg.globSync(['src/locale/**', ...globExcludeFiles], { cwd, absolute: true });
|
|
const outDir = path.resolve(cwd, 'lib', 'locale');
|
|
return tsupBuild(
|
|
userConfig.modifyTsupConfig({
|
|
entry,
|
|
splitting: false,
|
|
clean: false,
|
|
bundle: false,
|
|
silent: true,
|
|
treeshake: false,
|
|
target: 'node16',
|
|
keepNames: true,
|
|
outDir,
|
|
format: 'cjs',
|
|
skipNodeModulesBundle: true,
|
|
}),
|
|
);
|
|
}
|