想问下前端架构方案

2020-04-22 15:46:54 +08:00
 yantianqi

想问下,目前前端架构方案

1 、包 1 发布 npm,每次都要更新项目 A,B,而且安装在 node_modules 中没有热更新,感觉不太方便。

2 、最近了解到 lerna,把项目 A 和包 1 作为一个整体的项目,包 1 内容修改后,在项目 B 中好像不能同步更新

不知道有什么比较好对于多个项目,公用同一个包的方案

1837 次点击
所在节点    程序员
6 条回复
KuroNekoFan
2020-04-22 15:51:13 +08:00
lerna 就是 monorepo 的一个实现嘛,其实 monorepo 主要的问题在于如何进行粒度合适的发布了,只从开发角度说肯定比 multirepo 要方便一些
faceRollingKB
2020-04-22 15:53:39 +08:00
别的框架不清楚,angular 的话使用 library 可以解决,https://angular.io/guide/creating-libraries

自己组织架构的话可以参考这里面用到的 npm 本地包的配置( https://docs.npmjs.com/cli/link),使用 npm link 链接 library 项目而不是 node_modules
yhxx
2020-04-22 15:54:18 +08:00
webpack5 的联合模块可以看一下
可以一定程度上缓解这个问题
baxtergu
2020-04-22 16:36:24 +08:00
把包 1 单独部署成 umd 的版本,然后 A B 两个项目 external 这个包用 umd 方式引入,就可以实现包 1 在线版本更新后 A 和 B 不用重新编译部署,但是需要注意浏览器的缓存策略。
SilentDepth
2020-04-22 18:12:48 +08:00
如果接受包 1 更新后重新编译两个项目,npm link 或 yarn workspaces 可解(两个项目引用包 1 的同一个源码副本)。

如果希望两个项目什么都不用做就能获得包 1 的更新,考虑 @baxtergu #4 的方案吧。
1340641314
2020-04-24 21:06:17 +08:00
如果是本地开发的话,可以了解一下: https://www.npmjs.com/package/@fmfe/psync

指定
psync --dir=指定你 A 项目的目录 --dir=指定你 B 项目的目录 --dir=指定你其它使用的项目目录
程序会自动识别依赖关系,进行文件同步,不过笔记可惜的是,目前只支持 mac

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

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

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

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

© 2021 V2EX