diff --git a/.changeset/thick-fans-protect.md b/.changeset/thick-fans-protect.md new file mode 100644 index 000000000000..305dbe78b6c1 --- /dev/null +++ b/.changeset/thick-fans-protect.md @@ -0,0 +1,5 @@ +--- +'@modern-js/app-tools': patch +--- + +feat: support watch mode in modern build diff --git a/packages/document/main-doc/docs/en/apis/app/commands.mdx b/packages/document/main-doc/docs/en/apis/app/commands.mdx index aa9fb22a9adb..be445ba3e556 100644 --- a/packages/document/main-doc/docs/en/apis/app/commands.mdx +++ b/packages/document/main-doc/docs/en/apis/app/commands.mdx @@ -78,6 +78,7 @@ Usage: modern build [options] Options: -c --config specify the configuration file, which can be a relative or absolute path -h, --help show command help + -w --watch turn on watch mode, watch for changes and rebuild --analyze analyze the bundle and view size of each module ``` diff --git a/packages/document/main-doc/docs/zh/apis/app/commands.mdx b/packages/document/main-doc/docs/zh/apis/app/commands.mdx index 1cc4b758c4ff..d743437c88ff 100644 --- a/packages/document/main-doc/docs/zh/apis/app/commands.mdx +++ b/packages/document/main-doc/docs/zh/apis/app/commands.mdx @@ -78,6 +78,7 @@ Usage: modern build [options] Options: -c --config 指定配置文件路径,可以为相对路径或绝对路径 -h, --help 显示命令帮助 + -w --watch 开启 watch 模式, 监听文件变更并重新构建 --analyze 分析构建产物体积,查看各个模块打包后的大小 ``` diff --git a/packages/solutions/app-tools/src/commands/build.ts b/packages/solutions/app-tools/src/commands/build.ts index 541475c2ba1f..336aa36955a0 100644 --- a/packages/solutions/app-tools/src/commands/build.ts +++ b/packages/solutions/app-tools/src/commands/build.ts @@ -80,5 +80,7 @@ export const build = async ( 'Expect the Builder to have been initialized, But the appContext.builder received `undefined`', ); } - await appContext.builder.build(); + await appContext.builder.build({ + watch: options?.watch, + }); }; diff --git a/packages/solutions/app-tools/src/commands/index.ts b/packages/solutions/app-tools/src/commands/index.ts index 73424df54229..9adf71e466e4 100644 --- a/packages/solutions/app-tools/src/commands/index.ts +++ b/packages/solutions/app-tools/src/commands/index.ts @@ -63,6 +63,7 @@ export const buildCommand = async ( .description(i18n.t(localeKeys.command.build.describe)) .option('-c --config ', i18n.t(localeKeys.command.shared.config)) .option('--analyze', i18n.t(localeKeys.command.shared.analyze)) + .option('-w --watch', i18n.t(localeKeys.command.build.watch)) .action(async (options: BuildOptions) => { const { build } = await import('./build.js'); await build(api, options); diff --git a/packages/solutions/app-tools/src/locale/en.ts b/packages/solutions/app-tools/src/locale/en.ts index f9a1bfc7f3a7..224a325a06e6 100644 --- a/packages/solutions/app-tools/src/locale/en.ts +++ b/packages/solutions/app-tools/src/locale/en.ts @@ -17,6 +17,7 @@ export const EN_LOCALE = { }, build: { describe: 'build the app for production', + watch: 'turn on watch mode, watch for changes and rebuild', }, serve: { describe: 'preview the production build locally' }, deploy: { describe: 'deploy the application' }, diff --git a/packages/solutions/app-tools/src/locale/zh.ts b/packages/solutions/app-tools/src/locale/zh.ts index 4cbe3f4881b5..4c5a169574c0 100644 --- a/packages/solutions/app-tools/src/locale/zh.ts +++ b/packages/solutions/app-tools/src/locale/zh.ts @@ -16,6 +16,7 @@ export const ZH_LOCALE = { }, build: { describe: '构建生产环境产物', + watch: '开启 watch 模式, 监听文件变更并重新构建', }, serve: { describe: '启动生产环境服务' }, deploy: { describe: '部署应用' }, diff --git a/packages/solutions/app-tools/src/utils/types.ts b/packages/solutions/app-tools/src/utils/types.ts index a1426eb423fb..bb9f31307f1f 100644 --- a/packages/solutions/app-tools/src/utils/types.ts +++ b/packages/solutions/app-tools/src/utils/types.ts @@ -8,6 +8,7 @@ export type DevOptions = { export type BuildOptions = { config?: string; analyze?: boolean; + watch?: boolean; }; export type DeployOptions = {