From 95adca90d38f8ff2360526990c944ef48ca96f1e Mon Sep 17 00:00:00 2001 From: Xc Date: Tue, 9 Apr 2024 20:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86templateFiles?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8build=E7=9A=84=E6=97=B6=E5=80=99=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86make:dep=E8=BF=87=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/build.js | 3 ++ lib/index.js | 5 +++ lib/make.d.ts | 1 - lib/make.js | 47 -------------------- lib/makeDependency.d.ts | 1 + lib/makeDependency.js | 27 ++++++++++++ package.json | 3 +- scripts/make-dependency.js | 3 ++ src/build.ts | 3 ++ src/index.ts | 8 ++++ src/makeDependency.ts | 37 ++++++++++++++++ templateFiles/allRouters.ts | 5 +++ templateFiles/initialize.dev.ts | 67 +++++++++++++++++++++++++++++ templateFiles/initialize.prod.ts | 44 +++++++++++++++++++ templateFiles/initializeFeatures.ts | 8 ++++ 15 files changed, 213 insertions(+), 49 deletions(-) delete mode 100644 lib/make.d.ts delete mode 100644 lib/make.js create mode 100644 lib/makeDependency.d.ts create mode 100644 lib/makeDependency.js create mode 100644 scripts/make-dependency.js create mode 100644 src/makeDependency.ts create mode 100644 templateFiles/allRouters.ts create mode 100644 templateFiles/initialize.dev.ts create mode 100644 templateFiles/initialize.prod.ts create mode 100644 templateFiles/initializeFeatures.ts diff --git a/lib/build.js b/lib/build.js index 4443dc7..50f0ec7 100644 --- a/lib/build.js +++ b/lib/build.js @@ -6,6 +6,7 @@ const cross_spawn_1 = tslib_1.__importDefault(require("cross-spawn")); const path_1 = require("path"); const makeLocale_1 = tslib_1.__importDefault(require("./makeLocale")); const makeRouter_1 = tslib_1.__importDefault(require("./makeRouter")); +const makeDependency_1 = tslib_1.__importDefault(require("./makeDependency")); const fs_1 = require("fs"); async function build(cmd) { const mode = (cmd.mode || 'development'); @@ -26,6 +27,8 @@ async function build(cmd) { (0, makeLocale_1.default)('', mode === 'development'); // 再尝试makeRouter (0, makeRouter_1.default)({ subdir }, mode === 'development'); + // makeDependency + (0, makeDependency_1.default)(''); //ts类型检查 waring 还是error, //主要web受影响,error级别的话 控制台和网页都报错,warning级别的话 控制台报错 // development/staging/production diff --git a/lib/index.js b/lib/index.js index d9072fd..da45667 100755 --- a/lib/index.js +++ b/lib/index.js @@ -7,6 +7,7 @@ const create_1 = require("./create"); const build_1 = tslib_1.__importDefault(require("./build")); const makeDomain_1 = tslib_1.__importDefault(require("./makeDomain")); const makeLocale_1 = tslib_1.__importDefault(require("./makeLocale")); +const makeDependency_1 = tslib_1.__importDefault(require("./makeDependency")); const run_1 = tslib_1.__importDefault(require("./run")); const clean_1 = tslib_1.__importDefault(require("./clean")); const config_1 = require("./config"); @@ -50,6 +51,10 @@ commander_1.default .command('make:locale') .description('make locales') .action(makeLocale_1.default); +commander_1.default + .command('make:dependency') + .description('make dependency') + .action(makeDependency_1.default); commander_1.default .command('start') .option('--sourceMap', 'sourceMap') diff --git a/lib/make.d.ts b/lib/make.d.ts deleted file mode 100644 index b98bfb3..0000000 --- a/lib/make.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function make(): Promise; diff --git a/lib/make.js b/lib/make.js deleted file mode 100644 index d4ba829..0000000 --- a/lib/make.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const tip_style_1 = require("./tip-style"); -const cross_spawn_1 = tslib_1.__importDefault(require("cross-spawn")); -async function make() { - (0, tip_style_1.Success)(`${(0, tip_style_1.success)(`build oak-app-domain`)}`); - // ts-node scripts/build-app-domain & npm link ./app-domain - const result = cross_spawn_1.default.sync('ts-node', [require.resolve('../scripts/' + 'build-app-domain.js')], { - stdio: 'inherit', - shell: true, - }); - // const result2 = spawn.sync('npm -v', [], { stdio: 'inherit', shell: true }); - if (result.status === 0) { - (0, tip_style_1.Success)(`${(0, tip_style_1.success)(`build 执行完成`)}`); - } - else { - (0, tip_style_1.Error)(`${(0, tip_style_1.error)(`build 执行失败`)}`); - process.exit(1); - } - /* Success(`${success(`npm link oak-app-domain`)}`); - - const isWin = process.platform === 'win32'; - const result2 = !isWin ? spawn.sync( - 'sudo', - [`npm link ${process.cwd()}/src/oak-app-domain`], - { - stdio: 'inherit', - shell: true, - } - ) : spawn.sync( - 'npm', - [`link ${process.cwd()}/src/oak-app-domain`], - { - stdio: 'inherit', - shell: true, - } - ); - - if (result2.status === 0) { - Success(`${success(`link 执行完成`)}`); - } else { - Error(`${error(`link 执行失败`)}`); - process.exit(1); - } */ -} -exports.default = make; diff --git a/lib/makeDependency.d.ts b/lib/makeDependency.d.ts new file mode 100644 index 0000000..746e46e --- /dev/null +++ b/lib/makeDependency.d.ts @@ -0,0 +1 @@ +export default function make(cmd: any, rebuild?: boolean): Promise; diff --git a/lib/makeDependency.js b/lib/makeDependency.js new file mode 100644 index 0000000..b8af9f7 --- /dev/null +++ b/lib/makeDependency.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const tip_style_1 = require("./tip-style"); +const cross_spawn_1 = tslib_1.__importDefault(require("cross-spawn")); +const path_1 = require("path"); +async function make(cmd, rebuild) { + (0, tip_style_1.Success)(`${(0, tip_style_1.success)(`make dependecy`)}`); + // ts-node scripts/build-app-domain & npm link ./app-domain + const args = [(0, path_1.resolve)(__dirname, '../scripts/make-dependency.js')]; + if (rebuild) { + args.push('true'); + } + const result = cross_spawn_1.default.sync('node', args, { + stdio: 'inherit', + shell: true, + }); + // const result2 = spawn.sync('npm -v', [], { stdio: 'inherit', shell: true }); + if (result.status === 0) { + (0, tip_style_1.Success)(`${(0, tip_style_1.success)(`make dependency 执行完成`)}`); + } + else { + (0, tip_style_1.Error)(`${(0, tip_style_1.error)(`make dependency 执行失败`)}`); + process.exit(-1); + } +} +exports.default = make; diff --git a/package.json b/package.json index f8c237a..9f2c78d 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "lib/**/*", "plugins/**/*", "scripts/**/*", - "template/**/*" + "template/**/*", + "templateFiles/**/*" ], "author": "", "license": "", diff --git a/scripts/make-dependency.js b/scripts/make-dependency.js new file mode 100644 index 0000000..f86add1 --- /dev/null +++ b/scripts/make-dependency.js @@ -0,0 +1,3 @@ +const watch = process.argv[2]; +const startUpBuilder = require('oak-domain/lib/compiler/dependencyBuilder').default; +startUpBuilder(watch); \ No newline at end of file diff --git a/src/build.ts b/src/build.ts index e0534bd..c964082 100644 --- a/src/build.ts +++ b/src/build.ts @@ -11,6 +11,7 @@ import spawn from 'cross-spawn'; import { resolve } from 'path'; import makeLocale from './makeLocale'; import makeRouter from './makeRouter'; +import makeDep from './makeDependency'; import { copyFileSync } from 'fs'; type Mode = 'development' | 'staging' | 'production'; @@ -39,6 +40,8 @@ export default async function build(cmd: any) { makeLocale('', mode === 'development'); // 再尝试makeRouter makeRouter({ subdir }, mode === 'development'); + // makeDependency + makeDep(''); //ts类型检查 waring 还是error, //主要web受影响,error级别的话 控制台和网页都报错,warning级别的话 控制台报错 // development/staging/production diff --git a/src/index.ts b/src/index.ts index a6b753a..19026a8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ import { create, update } from './create'; import build from './build'; import makeDomain from './makeDomain'; import makeLocale from './makeLocale'; +import makeDependency from './makeDependency'; import run from './run'; import clean from './clean'; import { CLI_VERSION, CLI_NAME } from './config'; @@ -56,6 +57,13 @@ program .description('make locales') .action(makeLocale); + +program + .command('make:dependency') + .description('make dependency') + .action(makeDependency); + + program .command('start') .option('--sourceMap', 'sourceMap') diff --git a/src/makeDependency.ts b/src/makeDependency.ts new file mode 100644 index 0000000..2200781 --- /dev/null +++ b/src/makeDependency.ts @@ -0,0 +1,37 @@ +import { + Success, + Error, + error, + primary, + success, + warn, + Warn, +} from './tip-style'; +import spawn from 'cross-spawn'; +import { resolve } from 'path'; + +export default async function make(cmd: any, rebuild?: boolean) { + Success(`${success(`make dependecy`)}`); + // ts-node scripts/build-app-domain & npm link ./app-domain + const args = [resolve(__dirname, '../scripts/make-dependency.js')]; + if (rebuild) { + args.push('true'); + } + + const result = spawn.sync( + 'node', + args, + { + stdio: 'inherit', + shell: true, + } + ); + // const result2 = spawn.sync('npm -v', [], { stdio: 'inherit', shell: true }); + + if (result.status === 0) { + Success(`${success(`make dependency 执行完成`)}`); + } else { + Error(`${error(`make dependency 执行失败`)}`); + process.exit(-1); + } +} diff --git a/templateFiles/allRouters.ts b/templateFiles/allRouters.ts new file mode 100644 index 0000000..6db0ad0 --- /dev/null +++ b/templateFiles/allRouters.ts @@ -0,0 +1,5 @@ +"use oak router builder"; // 这行备注说明是用oak的router builder来生成allRouters +import React from 'react'; +import { IRouter } from '../../../types/router'; +let allRouters: IRouter[] = []; +export default allRouters; diff --git a/templateFiles/initialize.dev.ts b/templateFiles/initialize.dev.ts new file mode 100644 index 0000000..c31d6b3 --- /dev/null +++ b/templateFiles/initialize.dev.ts @@ -0,0 +1,67 @@ +import { mergeConcatMany } from 'oak-domain/lib/utils/lodash'; +import BackendRuntimeContext from '@project/context/BackendRuntimeContext'; +import FrontendRuntimeContext from '@project/context/FrontendRuntimeContext'; + +import { EntityDict, storageSchema } from '@project/oak-app-domain'; +import triggers from '@project/triggers'; +import checkers from '@project/checkers'; +import watchers from '@project/watchers'; +import timers from '@project/timers'; +import data from '@project/data'; +import startRoutines from '@project/routines/start'; +import { importations, exportations } from '@project/ports'; +import { create as createFeatures, FeatureDict } from '@project/features'; +import aspects, { AspectDict } from '@project/aspects'; +import common from '@project/configuration'; +import render from '@project/configuration/render'; + +import { initialize as initFrontend } from 'oak-frontend-base/es/initialize'; +import { BasicFeatures } from 'oak-frontend-base/es/features'; +import DebugConnector from 'oak-frontend-base/es/utils/DebugConnector'; + +export default function initialize() { + const totalTriggers = mergeConcatMany([triggers] as Array), + totalAspects = mergeConcatMany([aspects] as Array), + totalCheckers = mergeConcatMany([checkers] as Array), + totalWatchers = mergeConcatMany([watchers] as Array), + totalTimers = mergeConcatMany([timers] as Array), + totalStartRoutines = mergeConcatMany([startRoutines] as Array), + totalData = mergeConcatMany([data] as Array), + totalImportations = mergeConcatMany([importations] as Array), + totalExportations = mergeConcatMany([exportations] as Array), + totalCommon = mergeConcatMany([common] as Array), + totalRender = mergeConcatMany([render] as Array); + + const debugConnector = new DebugConnector( + storageSchema, + (store) => new BackendRuntimeContext(store), + totalAspects, + totalTriggers, + totalCheckers, + totalWatchers, + totalTimers, + totalStartRoutines, + totalData, + totalCommon, + totalImportations, + totalExportations + ); + + const totalFeatures = {} as FeatureDict & BasicFeatures; + const { features } = initFrontend( + storageSchema, + (store) => new FrontendRuntimeContext(store, totalFeatures), + debugConnector, + totalCheckers, + totalCommon, + totalRender + ); + + Object.assign(totalFeatures, features); + const appFeatures = createFeatures(totalFeatures); + Object.assign(totalFeatures, appFeatures); + + return { + features: totalFeatures, + }; +} \ No newline at end of file diff --git a/templateFiles/initialize.prod.ts b/templateFiles/initialize.prod.ts new file mode 100644 index 0000000..437384f --- /dev/null +++ b/templateFiles/initialize.prod.ts @@ -0,0 +1,44 @@ +import { mergeConcatMany } from 'oak-domain/lib/utils/lodash'; +import BackendRuntimeContext from '@project/context/BackendRuntimeContext'; +import FrontendRuntimeContext from '@project/context/FrontendRuntimeContext'; +import Connector from '@project/connector'; + +import { EntityDict, storageSchema } from '@project/oak-app-domain'; +import checkers from '@project/checkers'; +import { create as createFeatures, FeatureDict } from '@project/features'; +import common from '@project/configuration'; +import render from '@project/configuration/render'; + + +// import ogbCheckers from 'oak-general-business/es/checkers'; +// import { create as createOgbFeatures, FeatureDict as OgbFeatureDict } from 'oak-general-business/es/features'; +// import ogbCommon from 'oak-general-business/es/configuration'; +// import ogbRender from 'oak-general-business/es/configuration/render'; + +import { initialize as initFrontend } from 'oak-frontend-base/es/initialize'; +import { BasicFeatures } from 'oak-frontend-base/es/features'; +import { AspectDict } from './aspects'; + +export default function initialize() { + const totalCheckers = mergeConcatMany([checkers] as Array), + totalCommon = mergeConcatMany([common] as Array), + totalRender = mergeConcatMany([render] as Array); + + const totalFeatures = {} as FeatureDict & BasicFeatures; + const { features } = initFrontend( + storageSchema, + (store) => new FrontendRuntimeContext(store, totalFeatures), + Connector, + totalCheckers, + totalCommon, + totalRender + ); + + Object.assign(totalFeatures, features); + const appFeatures = createFeatures(totalFeatures); + Object.assign(totalFeatures, appFeatures); + + return { + features: totalFeatures, + }; +} \ No newline at end of file diff --git a/templateFiles/initializeFeatures.ts b/templateFiles/initializeFeatures.ts new file mode 100644 index 0000000..f33bcae --- /dev/null +++ b/templateFiles/initializeFeatures.ts @@ -0,0 +1,8 @@ +import { FeatureDict } from '@project/features'; +import { BasicFeatures } from 'oak-frontend-base/es/features'; +import { EntityDict } from '@project/oak-app-domain'; + + +export default async function initialize(features: FeatureDict & BasicFeatures) { + // 项目自己的features如果有初始化写在这里 +} \ No newline at end of file