webpack 打包后怎么在其它项目中引用

2019-07-09 12:11:06 +08:00
 duanzs

假设我有个大项目(前端 vue ),需要拆分成两三个小项目甚至更多个小项目。 然后需求是,将小项目 ABC 用 webpack 分别打包成 moduleA.js 、moduleB.js 、moduleC.js (或者其他类型文件或包),然后将这三个包引入到大项目 project 中(放到 static 文件中?可以动态 import ),然后就可以使用或路由到小项目中的页面、函数等等

6241 次点击
所在节点    Node.js
16 条回复
Sir814
2019-07-09 12:56:41 +08:00
配置入口和 webpack-html-plugin。应该可以
happyeveryday
2019-07-09 13:35:42 +08:00
1.mpa + 多个 html-plugin
2.微前端
duanzs
2019-07-09 13:43:37 +08:00
@happyeveryday mpa 是啥
duanzs
2019-07-09 13:44:12 +08:00
@Sir814 项目没在一个工程里
noe132
2019-07-09 14:01:14 +08:00
打包上传到 npm 或自建 npm,其他项目安装依赖就可以了
duanzs
2019-07-09 14:11:23 +08:00
@noe132 重点是,大项目引入后无需重新打包发布
randyo
2019-07-09 14:27:15 +08:00
打包成 umd 规范的,可以随便用了
15651980765
2019-07-09 14:31:19 +08:00
@duanzs 有一种方案不知道是否可行:你的子模块打包成 Amodule.js 、Bmodule.js 、Cmodule.js 放在静态资源服务器上,子模块更新时直接替换同名文件,主项目用 script 标签引入这些 js 文件使用,打包发布后,子模块发生变化,主项目无需重新打包发布,只需要客户端清除缓存重新加载 js 就可以了。
duanzs
2019-07-09 17:44:30 +08:00
@15651980765 我这么考虑过,不知道可不可行,目前知道这个弊端是需要必须提前知道子模块业务名
duanzs
2019-07-09 17:45:16 +08:00
@randyo 你和 15651980765 这位老哥应该一个意思吧
MrJeff
2019-07-09 21:28:41 +08:00
按你的需求 打包成多个 html 就可以了,但如果需要更复杂点 做成前端微服务 可以参考这个 https://single-spa.js.org/
duanzs
2019-07-10 09:17:16 +08:00
@MrJeff 感觉那样问题很多,比如使用统一的用户信息、状态等,另外三方库也会有多份儿
jinliming2
2019-07-10 09:35:46 +08:00
webpack 的 dll 包应该可以,把三个模块打成 prod 模式的 dll 然后包进去应该可以
duanzs
2019-07-10 09:42:59 +08:00
@jinliming2 刚随便百度了一下,webpack 的 dll 好像是解决三方库的
MrJeff
2019-07-10 10:42:37 +08:00
@duanzs 第三方库 用户信息共享 可以参考下 这篇文章 https://tech.meituan.com/2018/09/06/fe-tiny-spa.html
duanzs
2019-07-10 11:30:38 +08:00
@MrJeff 这个比较符合我的需求,但是有个巨大局限,就是必须已知有几个子项目及其信息

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/581278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX