You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化多ExtJS应用程序的构建时长

优化ExtJS模块化单体应用构建时长的方案

针对多应用多主题构建耗时过长的问题,可通过以下方法复用公共资源编译结果,大幅缩减总构建时间:

1. 预构建公共包并跨应用共享

  • 单独编译公共包一次,输出到共享目录:
    sencha package build common --output-dir ../shared-packages/common
    
  • 修改各应用的app.json,将公共包的引用指向预构建目录,避免重复编译:
    "packages": {
        "common": {
            "location": "../shared-packages/common",
            "remote": false,
            "requires": true
        }
    }
    

2. 预构建主题并复用

  • 分别编译普通主题和高对比度主题到共享目录:
    sencha package build theme-default --output-dir ../shared-themes/default
    sencha package build theme-high-contrast --output-dir ../shared-themes/high-contrast
    
  • 应用构建时直接指定预构建主题,跳过主题编译步骤:
    sencha app build production --theme=../shared-themes/high-contrast
    
  • 也可在app.json中配置主题路径,让构建流程自动复用:
    "theme": {
        "name": "theme-high-contrast",
        "location": "../shared-themes/high-contrast"
    }
    

3. 整合「保存与恢复集合」到现有构建流程(无需舍弃app.json)

无需完全重写构建流程,只需通过自定义build.xml扩展原生sencha app build:

  • 第一步:保存公共集合
    在项目根目录创建或修改build.xml,添加保存公共依赖集合的目标:

    <project name="shared-build" default="save-common-set">
        <import file="${basedir}/.sencha/app/build-impl.xml" />
    
        <target name="save-common-set">
            <x-compiler>
                <!-- 定义公共依赖的编译范围:ExtJS框架、公共包、主题 -->
                <compilerOptions>
                    <classpath>
                        <path location="${sencha.sdk.dir}/src" />
                        <path location="../shared-packages/common/src" />
                        <path location="../shared-themes/default/src" />
                    </classpath>
                </compilerOptions>
                <!-- 将编译结果保存到缓存目录 -->
                <saveSet dir="${basedir}/build-cache/common-set" />
                <compile />
            </x-compiler>
        </target>
    </project>
    

    执行一次保存公共集合:

    sencha ant save-common-set
    
  • 第二步:在应用中恢复公共集合
    修改各应用的build.xml,添加复用公共集合的构建目标:

    <project name="app-build" default="build-with-shared">
        <import file="${basedir}/.sencha/app/build-impl.xml" />
    
        <target name="build-with-shared" depends="init">
            <x-compiler>
                <!-- 恢复之前保存的公共集合 -->
                <restoreSet dir="${workspace.dir}/build-cache/common-set" />
                <!-- 仅编译当前应用的代码 -->
                <compilerOptions>
                    <classpath>
                        <path location="${basedir}/src" />
                    </classpath>
                </compilerOptions>
                <compile />
            </x-compiler>
        </target>
    </project>
    

    用这个自定义目标代替原生构建命令:

    sencha ant build-with-shared
    

4. 宏控制多构建的优化

  • 将公共宏逻辑抽离到预构建的公共包中,避免每个应用重复处理相同的宏分支。
  • 恢复公共集合后,仅针对应用的差异化代码编译不同宏版本,比如:
    sencha ant build-with-shared -Dsencha.macro.REGION=EU
    sencha ant build-with-shared -Dsencha.macro.REGION=US
    

通过以上方案,ExtJS框架、公共包和主题的编译次数可从原来的10+次降到1次,每个应用仅需编译自身的精简代码,总构建时长会大幅缩短。

内容的提问来源于stack exchange,提问作者Coderino Javarino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:35:16