alibaba / ice

🚀 ice.js: The Progressive App Framework Based On React(基于 React 的渐进式应用框架)
https://ice.work
MIT License
18k stars 2.1k forks source link

路由配置采用 config 配置无效 #6051

Open dozedoze opened 1 year ago

dozedoze commented 1 year ago

Describe the bug

1.当前使用的 ice 版本 3.1.2

  1. 不想使用内置的约定路由,于是使用了向下兼容之前版本的 config 配置形式,发现配置的路由无法展示
  2. 每次修改 config 内的 routes 配置就需要重新启动项目,增加了非常大的开发成本

Expected behavior

1.config 优先级应该大于约定式路由,使用 config 配置的时候应该关闭约定式的路由逻辑 2.个人理解路由模式可以放在配置中,如果是config路由配置形式 则路由配置的逻辑不应该放在启动配置中,才能保证在文件更新的时候自动同步更新.ice文件中的route文件

Actual behavior

No response

Version of ice.js

3.1.2

Content of build.json or ice.config.mts

import { defineConfig } from '@ice/app';
import icestark from '@ice/plugin-icestark';
// import { routesConfig } from './src/routes';

export default defineConfig(() => ({
  ssg: false,
  // When the child application is registered by url, codeSplitting `page` is recommended.
  codeSplitting: 'page',
  plugins: [icestark({ type: 'child' })],
  routes: {
    config: [
      {
        path: 'demo1',
        // 从 src/page 开始计算路径,并且需要写后缀。
        component: 'demo/index.tsx',
      },
      {
        path: '/',
        component: 'index.tsx',
      },
    ],
  },
}));

Additional context

No response

ClarkXia commented 1 year ago

提供下 src/pages 下的目录结构,对于路由文件更新热重启的问题后续我们优化下 暂时可以先通过 ignoreFiles 忽略 pages 下默认的规则

dozedoze commented 1 year ago

// 路由结构就是这样的 ├─ pages
├├── demo ├ └── index.tsx ├├── index.tsx ├├── layout.tsx

另外,ignorefiles 的作用不是忽略不要将 **/xx 的文件下作为路由吗? 有时候遇到页面结构不复杂 在页面文件下 我不会新建 comp文件 直接吧页面的拆分几个部分平铺在这个文件下了, 这种情况这种写法就行不通了

ClarkXia commented 1 year ago

ignoreFiles 作用是为了忽略基于约定的文件,如果你配置成 ** 默认所有规则都走 config,而不是把 config 内容作为约定式的补充

dozedoze commented 1 year ago

试了一下 还是不行 配置片段 routes: { config:[ { path: '/demo2', component: 'demo/index.tsx', }, { path: '/', component: 'index.tsx', },], ignoreFiles: ['**'], }, ]

错误信息: Please add routes(like pages/index.tsx) to your app

ClarkXia commented 1 year ago

@dozedoze 你这个错误暂时无法复现,可以参考下 https://github.com/alibaba/ice/blob/master/examples/routes-config/ice.config.mts 这个例子,提供一个复现的 demo 给我们

dozedoze commented 1 year ago

export default defineConfig(() => ({ ssg: false, codeSplitting: 'page', plugins: [icestark({ type: 'child' }), request()], routes: { config: routesConfig, ignoreFiles: ['**'], }, dropLogLevel: 'log', eslint: true, })); 也是新建的仓库 配置项相对该例子就多了微前端的plugin routesConfig 就是我上面的那个