V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pkuphy
V2EX  ›  程序员

前端项目分支切换, npm 包管理问题

  •  
  •   pkuphy · 6 天前 · 1445 次点击

    请教一下大家,前端项目,如果不同分支的代码依赖的 npm 包版本不一样,怎样方便地在切换分支后,让各分支使用各自相应的 npm 包?

    难道每次切换分支后,都要重新安装一遍依赖吗?

    19 条回复    2020-11-22 21:17:13 +08:00
    kyuuseiryuu
        1
    kyuuseiryuu   6 天前 via iPhone
    你不会把 node_modules 加到版本控制了吧?

    如果没有的话两个分支的依赖都装就好了。

    除非有用到同一个包但不同版本,那就蛋疼了。
    yyfearth
        2
    yyfearth   6 天前
    @kyuuseiryuu 现在前端 node_modules 加 git 里可不太好
    太大了 webpack babel react/vue/angular 什么的 一大堆 可以上 G
    而且每次 npm install 相当多文件会变化

    除非你 npm install 一次之后再也不动 这当然已经不可能了
    yyfearth
        3
    yyfearth   6 天前
    @pkuphy 最简单的办法就是加 githook checkout 的时候自动 npm i
    yyfearth
        4
    yyfearth   6 天前
    @kyuuseiryuu LZ 说的就是同样的包版本不一样 这个太常见了
    luob
        5
    luob   6 天前
    一个简单的方法:

    新分支正常使用,给老分支全局替换一个 alias

    npm i [email protected]:[email protected]

    - import MyPackage from "my-package"
    + import MyPackage from "my-package-1"
    kyuuseiryuu
        6
    kyuuseiryuu   6 天前 via iPhone
    @yyfearth 😂没注意到,我🦐了
    seki
        7
    seki   6 天前
    当然是每次再安装一遍了

    如果想要做得自动化一点的话,可以用 husky 这样的加 git hooks,感觉 post-checkout 和 post-merge 应该就满足了
    Rheinmetal
        8
    Rheinmetal   6 天前
    yarn2 的 plug and play 可以提交依赖 然而支持的包不是很多 也没有适配脚手架
    shenyu1996
        9
    shenyu1996   6 天前 via Android
    分俩文件夹 当成两个项目维护
    yangtze
        10
    yangtze   6 天前 via iPhone   ❤️ 1
    git worktree 了解一下,专门应对多分支同时开发的场景
    crysislinux
        11
    crysislinux   6 天前 via Android
    有时候是会有这种情况,比如升级主体框架,但同时又在之前版本基础上修 bug 。切了就要 install 蛮不爽的,我选择直接 copy 一份单独开发。
    fhsan
        12
    fhsan   6 天前
    我选择 nvm use + zsh
    revalue
        13
    revalue   6 天前
    @yangtze 不同分支之间,npm 包要重装。我试过
    1OF7G
        14
    1OF7G   6 天前
    如果分支比较固定的情况,可以使用 git worktree 。
    lin07hui
        15
    lin07hui   6 天前
    cwliang
        16
    cwliang   6 天前
    yarn 重新装一遍,个别包版本不一样,也就两秒种的事
    pkuphy
        17
    pkuphy   6 天前
    @shenyu1996
    > 分俩文件夹 当成两个项目维护

    我之前就采用这样的方式,想着或许社区有更优雅的解决办法。

    ---
    切换分支后重新安装,有时候一些祖传 npm 包不小心升级后 API 发生变化,会带来很多让人头疼的麻烦。
    pkuphy
        18
    pkuphy   6 天前
    @yangtze 多谢提示,git worktree 看起来是一个好方法。
    KuroNekoFan
        19
    KuroNekoFan   6 天前
    是的,重新安装一遍,反正很快
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1883 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 143ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    ♥ Do have faith in what you're doing.