# runtime-modes 规范
定义 TvT.js 在普通项目模式、预览模式、单插件模式之间的切换方式,包括每种模式由哪些环境变量控制,以及这些变量如何影响路由和启动行为。
.env、.env.predev、.env.predev.one 进行模式切换FES_APP_PLUGINS 控制的行为FES_APP_PREINDEX 控制的行为FES_APP_PLSNAME 控制的行为src/app.jsx 如何根据不同模式修改路由与启动逻辑package.json 中模式脚本的职责边界.fes.js、.fes.predev.js、.fes.predev.one.js 的项目约定映射qiankun 或 uni-app 容器中的专属集成约束.env.env.predev.env.predev.onepackage.jsonsrc/app.jsxsrc/common/utils.jssrc/plugins/preview.vue.fes.js.fes.predev.js.fes.predev.one.jsTvT.js 仓库 SHALL 通过环境变量预设与 package.json 脚本来定义运行模式,而不是通过临时修改业务代码切换模式。普通项目模式、预览模式、单插件模式 SHALL 分别由稳定的脚本入口与环境文件组合驱动。
yarn dev 或 yarn buildpredev 或 predev.one.env 与 .fes.js 为基础yarn pre.dev 或 yarn pre.buildFES_ENV=predev.env.predev 与 .fes.predev.js 为基础yarn pre.dev.one 或 yarn pre.build.oneFES_ENV=predev.one.env.predev.one 与 .fes.predev.one.js 为基础TvT.js 项目 SHALL 将不同 FES_ENV 与配置文件的对应关系视为项目级运行约定:默认环境对应 .fes.js,predev 对应 .fes.predev.js,predev.one 对应 .fes.predev.one.js。维护者在调整脚本或环境配置时 SHALL 保持这组映射稳定。
package.json 中的运行脚本FES_ENV 与配置文件的对应关系 SHALL 保持不变当 FES_APP_PLUGINS=false 时,系统 SHALL 将当前运行视为普通项目模式。在该模式下,系统 SHALL 不自动为 src/plugins/**/pages/**/*.vue 注册插件路由,并 SHALL 保持普通项目首页语义,不以预览中心替换默认首页。
FES_APP_PLUGINS=falsesrc/app.jsx 执行 patchRoutes/plugins/... 路由集合FES_APP_PLUGINS=falsesrc/app.jsx 执行 modifyRoutesrc/plugins/preview.vue 替换根路由首页当 FES_APP_PLUGINS=true 时,系统 SHALL 启用插件路由发现;当同时 FES_APP_PREINDEX=true 时,系统 SHALL 使用预览中心作为根首页。预览模式的目标是面向插件与案例展示,而不是普通业务项目首页。
FES_APP_PLUGINS=truesrc/app.jsx 扫描 ./plugins/**/pages/**/*.vue/plugins/<plugin>/... 路由FES_APP_PREINDEX=truesrc/app.jsx 执行 modifyRoute/ 的首页组件 SHALL 被替换为 src/plugins/preview.vue当设置 FES_APP_PLSNAME 时,系统 SHALL 将当前运行限定为指定插件的单插件模式。该模式下,插件页面发现、插件配置发现以及单插件构建输出 SHALL 共同围绕目标插件及其显式声明依赖进行过滤。
FES_APP_PLSNAME='qiankunTvt'src/app.jsx 进行页面扫描./plugins/qiankunTvt/pages/ 下的页面参与路由注册FES_APP_PLSNAME='qiankunTvt'src/common/utils.js 读取 PLS/*/config.jsqiankunTvt 的插件配置进入当前配置集合FES_APP_PLSNAME='qiankunTvt'qiankunTvt 在 config.require 中声明了依赖插件yarn pre.build.one预览标签与徽标相关的 menuSetup 远程数据 SHALL 由 src/app.jsx 的启动前逻辑控制:当 FES_APP_PLUGINS=true 且处于开发环境时,或显式开启 FES_APP_ONLINE_API 时,系统 SHALL 调用 getMenu() 加载这类数据。该条件独立于是否处于单插件模式。
FES_APP_PLUGINS=truegetMenu() 加载预览标签与徽标设置FES_APP_PLUGINS=falseFES_APP_ONLINE_APImenuSetup 远程数据预览中心中的 getOnlinePluginConfig() 线上插件菜单补充 SHALL 由 src/plugins/preview.vue 单独控制:仅当 NODE_ENV='development' 且未设置 FES_APP_PLSNAME 时,或显式开启 FES_APP_ONLINE_API 时,系统才 SHALL 拉取线上发布菜单并与本地配置合并。
FES_APP_PLSNAMEFES_APP_PLSNAME 已设置FES_APP_ONLINE_APIFES_APP_ONLINE_APImenuSetup 加载与线上插件菜单补充 SHALL 都允许执行