emosheeep / vite-plugin-virtual-mpa

Out-of-box MPA plugin for Vite, generate multiple entries using only one template.
https://stackblitz.com/~/github.com/emosheeep/vite-plugin-virtual-mpa
MIT License
116 stars 15 forks source link

`createPages` 返回值类型导致添加额外入口时报错 #14

Closed jiadesen closed 1 year ago

jiadesen commented 1 year ago

我一直觉得类型设计的太复杂了...不利于灵活使用

image image
emosheeep commented 1 year ago

该有的限制还是要有的,写类型就是为了能做一些静态分析,如果大家都按照规定的方式写的话可能奇怪的bug也会少很多,就不用运行时检查太多东西了

emosheeep commented 1 year ago

看上去这块由于泛型的存在确实不支持这样使用,如果想...展开,可以给那个字面量对象也包一层 createPages 函数,如

createMpaPlugin({
  pages: [
    ...createPages({
      name: 'keystone',
      entry: '/src/modules/keystone/main.js',
      data: { title: '页面1' },
    }),
    ...createPages({
      name: 'list',
      entry: '/src/modules/list/main.js',
      data: { title: '页面2' },
    }),
  ],
}),
jiadesen commented 1 year ago

这么搞复杂了,明确指定 createPages 的返回值类型为 Page[] 我觉得也可以

emosheeep commented 1 year ago

这样是不行的,会导致原本的字面量失去类型提示,不妥

jiadesen commented 1 year ago

会导致原本的字面量失去类型提示

我认为这个不重要,要这个提示有啥用...降低使用成本和心智负担也很重要

emosheeep commented 1 year ago

我理解,不需要的话可以直接 ts-ignore

jiadesen commented 1 year ago

算了,我还是直接这么用吧...

import type { Page } from "vite-plugin-virtual-mpa";

const pages: Page[] = [...];