-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Task] 微应用脚手架 cli #2679
Comments
报名此任务,有cli开发经验,通读过qiankun2.0代码,最早开始时间10.02,可长期维护 |
太棒了!任务去这个帖子里回复领取哦🤝 |
能一起参与这个任务吗? |
你可以跟 @hakushinring 商量一下分个工哈哈 |
@hakushinring 咋样老哥,要不弄个联系方式商量下? 也有开发cli经验 |
RFC create-qiankun背景为快速创建基于qiankun3.0的微前端项目开发的cli项目,帮助开发者快速上手微前端,解决并演示常见微前端项目面临问题 说明防止模板被墙,模板存放在create-qiankun仓库中,随cli版本发布更新 模板选择主应用
子应用
支持语言javascript 仓库模式pnpm monorepo 工程创建后的目录结构
使用方式npx create-qiankun my-project 开发 打包 新增子应用 参数 实现策略根据用户输入,下载对应模板,动态生成应用,项目默认自带一个主应用,一个子应用
|
有没有可能引入插件设计?拆分模板,会更灵活一些。 |
那样会导致复杂度变高,目前用不上 |
命令基本都是基于 |
monorepo 还是用pnpm好一些,能大量节省时间和空间,如果反对的人比较多可以考虑换到lerna |
通过 cli 创建出来的主子应用是monorepo可能不妥,我接触到的大部分微前端研发都是单仓模式 |
在cli层面处理单仓库很麻烦,cli创建的主子应用如何关联起来? |
关联的交互应该是填 remote entry 的地址吧?需要填仓库地址吗? |
填地址的方案不友好,很多项目在内网不一定有git地址,本机测试环境的项目也没有remote地址,我和 @qiYuei 讨论后,默认创建monorepo项目,单独创建主应用和子应用的时候不做任何管理,由用户自己处理(会在redeme上写明操作方式) |
不是 git 地址,指 |
@kuitos 有几个问题需要确认下
// package.json name = 'vue3'
{
name: "vue3",
entry: "//localhost:(端口)",
container: "#subapp-container",
activeRule: "/vue3",
},
|
|
|
|
对说的是创建时的模板端口,自增的话也有一个问题。比如写死从 // 特定的常用端口和系统端口
const commonPorts = [21, 22, 23, 25, 53, 80, 110, 443, 3306, 8080];
export function generatePort(excludes: number[] = []) {
let port;
do {
// 随机生成一个端口号(1 - 65535)
port = Math.floor(Math.random() * 65535) + 1;
} while (commonPorts.includes(port) || port <= 1024 || excludes.includes(port));
return port;
} 现有 |
那不用考虑这种情况吧,反正启动时都还是会做冲突检测。配置没更新感觉很难解决,子应用启动后发现冲突了做一下提示吧,提示要更新主应用配置 |
自增可以根据主应用端口自增,比如主应用分配到9000,子应用就从9001开始 |
端口自增要考虑其他软件占用情况,我推荐是9000开始,冲突概率小一点 |
怎么找到主应用位置并且找到端口,这是个难题。还是会有 多次执行 |
提供脚手架 cli 一键创建主应用 & 子应用,支持 React、vue 模板
The text was updated successfully, but these errors were encountered: