V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JustLookBy
V2EX  ›  Node.js

nodejs 怎样优雅的依赖同个模块的俩个版本?

  •  
  •   JustLookBy · 2021-07-26 17:01:19 +08:00 · 3566 次点击
    这是一个创建于 1200 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ##起因##

    用的 vue.js +elementui, 然后想用新版本的 datepicker 组件,其他的用旧版本。新版本已经有已知的 bug 了,不适合全局用。

    ##问题## 所以想问下如何同时引用俩个版本的模块?其中一个版本其实只要一个组件。

    ##已经尝试的方案## 用 npm i element-ui-latest@npm:element-ui 这个命令可以让新旧版本同时存在,并且引用,但是引用的时候出错。原因是 datepicker 这组件的引用有用到 element-ui这个模块前缀,而不是全用相对位置。

    第 1 条附言  ·  2021-07-26 18:40:13 +08:00
    看来没啥好办法,曲线救国了一下。
    全局用新版本,有 bug 的组件用了旧版本。 向旧兼容没出现问题
    8 条回复    2021-07-27 10:23:54 +08:00
    chaoFanExcellent
        1
    chaoFanExcellent  
       2021-07-26 17:20:58 +08:00
    你把新版本的 datepicker 看源码自己写一个组件,其他的用旧版本就行了
    JustLookBy
        2
    JustLookBy  
    OP
       2021-07-26 17:36:49 +08:00
    @chaoFanExcellent 啊这优雅嘛🙈
    libook
        3
    libook  
       2021-07-26 17:55:01 +08:00
    如果每个组件之间互相独立,那么你可以直接把相应组件的代码复制到本地项目里,重命名成另一个组件名。

    如果组件之间耦合较高,那么可以了解一下微前端。

    最优雅的方式是只用一个版本。
    renmu123
        4
    renmu123  
       2021-07-26 18:47:49 +08:00 via Android
    旧版本的 bug 不比新版本多?
    Jeremial
        5
    Jeremial  
       2021-07-26 19:00:29 +08:00
    yarn 的别名了解一下?
    A 模块版本 1, 同时给 A 模块起一个别名 B, 使用版本 2
    JustLookBy
        7
    JustLookBy  
    OP
       2021-07-26 20:29:46 +08:00
    @libook 耦合度太高了,不好 copy,我是在已有项目上加个小功能而已,微前端应该不适用😂
    @renmu123 项目是旧版本搭建的,没啥 bug😏。

    @Jeremial 你这个和我尝试的那个方案是一样的 `npm i element-ui-latest@npm:element-ui`,行不通
    wednesdayco
        8
    wednesdayco  
       2021-07-27 10:23:54 +08:00
    “两个版本”这底子就不优雅了,不如把老版本升级?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.