-
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
[Feature Request] 后期可以在文档中加入基于vite的配置指导吗? #1268
Comments
同问 |
与 #1257 重复 |
请问啥时候文档能出对vite的支持吗 |
希望可以支持vite |
下面是我使用 Vite2 vue3 微应用 接入qiankun 方法
1.配置
|
感谢感谢,那么主应用的配置也方便发一下吗
…------------------ 原始邮件 ------------------
发件人: "umijs/qiankun" ***@***.***>;
发送时间: 2021年3月26日(星期五) 中午1:45
***@***.***>;
***@***.******@***.***>;
主题: Re: [umijs/qiankun] [Feature Request] 后期可以在文档中加入基于vite的配置指导吗? (#1268)
下面是我使用 Vite2 vue3 微应用 接入qiankun 方法
目前qiankun 官方还没有出 vue3 和vite 的接入方法,下面写一下我是如何把 vite2 + vue3 接入乾坤的
1.配置 vite.config.ts
把项目打包成 umd 格式的js 文件
const { name } = require("./package"); export default ()=>{ return defineConfig({ //...其他配置 build: { target: "esnext", lib: { name: `${name}-[name]`, entry: path.resolve(__dirname, "src/main.ts"), formats: ["umd"], }, }, }) }
2.改造路由配置
// src/router/router.ts ///...其他代码 const router = createRouter({ history: createWebHashHistory( window.__POWERED_BY_QIANKUN__ ? "/app-vue/" : "/" ), routes, }); export default router;
3.改造入口文件
//src/main.ts import Vue from "vue"; import { createApp } from "vue"; import App from "./App.vue"; import router from "./router/router"; import { createRouter, createWebHashHistory } from "vue-router"; // let router; let instance: Vue.App<Element>; declare global { interface Window { __POWERED_BY_QIANKUN__?: string; } } interface IRenderProps { container: Element | string; } function render(props: IRenderProps) { const { container } = props; instance = createApp(App); instance .use(Antd) .use(router) .mount( container instanceof Element ? (container.querySelector("#app") as Element) : (container as string) ); } // 独立运行时 if (!window.__POWERED_BY_QIANKUN__) { render({ container: "#app" }); } //暴露主应用生命周期钩子 export async function bootstrap() { console.log("subapp bootstraped"); } export async function mount(props: any) { console.log("mount subapp"); render(props); } export async function unmount() { console.log("unmount college app"); instance.unmount(); }
通过上面改造,打包之后,即可接入到主应用中
|
主应用官网文档都很清楚了哈,参考官网
…------------------ 原始邮件 ------------------
发件人: "hello ***@***.***>;
发送时间: 2021年3月26日(星期五) 中午1:50
收件人: ***@***.***>;
抄送: ***@***.***>; ***@***.***>;
主题: Re: [umijs/qiankun] [Feature Request] 后期可以在文档中加入基于vite的配置指导吗? (#1268)
感谢感谢,那么主应用的配置也方便发一下吗
------------------&nbsp;原始邮件&nbsp;------------------
发件人: "umijs/qiankun" ***@***.***&gt;;
发送时间:&nbsp;2021年3月26日(星期五) 中午1:45
***@***.***&gt;;
***@***.******@***.***&gt;;
主题:&nbsp;Re: [umijs/qiankun] [Feature Request] 后期可以在文档中加入基于vite的配置指导吗? (#1268)
下面是我使用 Vite2 vue3 微应用 接入qiankun 方法
目前qiankun 官方还没有出 vue3 和vite 的接入方法,下面写一下我是如何把 vite2 + vue3 接入乾坤的
1.配置 vite.config.ts
把项目打包成 umd 格式的js 文件
const { name } = require("./package"); export default ()=&gt;{ return defineConfig({ //...其他配置 build: { target: "esnext", lib: { name: `${name}-[name]`, entry: path.resolve(__dirname, "src/main.ts"), formats: ["umd"], }, }, }) }
2.改造路由配置
// src/router/router.ts ///...其他代码 const router = createRouter({ history: createWebHashHistory( window.__POWERED_BY_QIANKUN__ ? "/app-vue/" : "/" ), routes, }); export default router;
3.改造入口文件
//src/main.ts import Vue from "vue"; import { createApp } from "vue"; import App from "./App.vue"; import router from "./router/router"; import { createRouter, createWebHashHistory } from "vue-router"; // let router; let instance: Vue.App<Element&gt;; declare global { interface Window { __POWERED_BY_QIANKUN__?: string; } } interface IRenderProps { container: Element | string; } function render(props: IRenderProps) { const { container } = props; instance = createApp(App); instance .use(Antd) .use(router) .mount( container instanceof Element ? (container.querySelector("#app") as Element) : (container as string) ); } // 独立运行时 if (!window.__POWERED_BY_QIANKUN__) { render({ container: "#app" }); } //暴露主应用生命周期钩子 export async function bootstrap() { console.log("subapp bootstraped"); } export async function mount(props: any) { console.log("mount subapp"); render(props); } export async function unmount() { console.log("unmount college app"); instance.unmount(); }
通过上面改造,打包之后,即可接入到主应用中
|
如果报下面的错,需要加上 rollup 的配置。 UMD and IIFE output formats are not supported for code-splitting builds.
const { name } = require("./package");
export default ()=>{
return defineConfig({
//...其他配置
build: {
target: "esnext",
lib: {
name: `${name}-[name]`,
entry: path.resolve(__dirname, "src/main.ts"),
formats: ["umd"],
},
rollupOptions: {
output: {
inlineDynamicImports: true,
},
},
},
})
} |
还有一些细节要注意, 因为 vite 的 tree shaking, 在 vite 2.0 + 的版本中的 vite.config.ts , 在 rollupOptions. preserveEntrySignatures 设置为 strict。 如果设置为 false 会无法正常工作。 |
按照您的方式进行了配置调整,构建代码是ok了,但是,主应用加载子应用的时候还是报错了。 错误内容如下: 子应用代码如下: 辛苦帮忙看一下吧 |
按照您的方式进行了配置调整,构建代码是ok了,但是,主应用加载子应用的时候还是报错了。 错误内容如下: 子应用代码如下: 辛苦帮忙看一下吧 |
@wangzhiwei1888 rollupOptions input 去掉 否则打包的不是umd |
开发环境没法解决有点太可惜了 |
写了一个基于es打包的 vite插件 vite-plugin-qiankun
|
为啥我主应用如果是vite的话,就接入不了子应用的微前端呢? |
你可以参考我的这个项目:https:/liugangtaotie/qiankun-mobile-code 解决问题:qiankun 实战 demo,父应用 vue(vite),子应用用 react(webpack) 和 vue(webpack) |
我去掉了,但是依旧报那个问题,请问还有可能是什么问题嘛 |
你好,我已经收到你的邮件了。
|
增加rollup 配置后确实可以打包,但最终打包出的文件没有进行代码分割的,,, |
你好,我已经收到你的邮件了。
|
有试着打包上线吗,我打包出问题了 |
mark |
你好,我已经收到你的邮件了。
|
@wangzhiwei1888 我也是一样的问题,请问怎么解决的 |
你好,我已经收到你的邮件了。
|
有没demo链接呢? |
你好,我已经收到你的邮件了。
|
后期可以在文档中加入基于vite的配置的例子和或者一些api吗?
The text was updated successfully, but these errors were encountered: