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

Composer Install 不能安装最新添加的 Package,而是要把所有的包重新下载?

  •  
  •   TangMonk · 2019-09-03 15:41:25 +08:00 · 5122 次点击
    这是一个创建于 1901 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个有点坑啊,怎么不向 bundler, npm 学习下

    18 条回复    2019-09-13 14:13:27 +08:00
    carlosforppp
        1
    carlosforppp  
       2019-09-03 16:16:16 +08:00
    composer update
    skyjerry
        2
    skyjerry  
       2019-09-03 16:19:57 +08:00
    你要用 composer require
    silenceeeee
        3
    silenceeeee  
       2019-09-03 17:05:10 +08:00
    你说的应该是 composer require 的功能吧,建议过一下 composer 的教程啊
    xiaoriri666
        4
    xiaoriri666  
       2019-09-03 17:42:50 +08:00
    composer update 包名
    可以只更新指定的扩展啊,多看看教程
    yunye
        5
    yunye  
       2019-09-03 17:49:50 +08:00 via Android
    垃圾 PHP 趁早换语言😉
    TangMonk
        6
    TangMonk  
    OP
       2019-09-03 17:55:00 +08:00
    @carlosforppp #1
    @xiaoriri666 #4
    这个会把所有的包都 update
    TangMonk
        7
    TangMonk  
    OP
       2019-09-03 17:55:27 +08:00
    @silenceeeee #3
    @skyjerry #2

    如果包很多,得一个一个 require。
    TangMonk
        8
    TangMonk  
    OP
       2019-09-03 18:02:41 +08:00
    @yunye #5 PHP 还是有很多优点的,只是用过 ruby 之后用其他语言都有点强迫症
    yunye
        9
    yunye  
       2019-09-03 18:26:06 +08:00 via Android
    好歹先看下 composer 用法再来横评吧
    linxiaojialin
        10
    linxiaojialin  
       2019-09-03 18:51:03 +08:00
    1.你之前 composer install 后生成的 composer.lock 文件还在不在?在的话再次执行 composer install 不会自动更新所有包的.
    2.添加新包最好用 composer require.
    3.新包很多的话,也可以手动添加到 composer.json,再执行 composer install.
    4.记得.json 和.lock 文件同时提交 Git.
    5.PHP is the best language in the world.
    TangMonk
        11
    TangMonk  
    OP
       2019-09-03 19:45:23 +08:00 via iPhone
    @yunye 我看过,有人给 composer 反馈也不改

    https://github.com/composer/composer/issues/2969
    TangMonk
        12
    TangMonk  
    OP
       2019-09-03 19:49:05 +08:00 via iPhone
    @linxiaojialin 是这样,我在本地 require 了一些包,然后同步更新到服务器上,再执行 install,服务器上以前安装的包又安装一遍,这是没必要的步骤。
    cszchen
        13
    cszchen  
       2019-09-04 01:14:38 +08:00 via Android
    先找自身的问题,composer 不会重复安装,全世界都用的很开心
    cszchen
        14
    cszchen  
       2019-09-04 01:17:23 +08:00 via Android
    composer install 会根据你开发时安装的版本来安装包,避免兼容问题。如果要更新用 composer update xxx
    dvaknheo
        15
    dvaknheo  
       2019-09-04 09:30:08 +08:00
    @linxiaojialin .lock 要存在 GIT 里? 不对吧,这不是用于锁定不再重新下载的么。
    linxiaojialin
        16
    linxiaojialin  
       2019-09-04 10:08:25 +08:00
    @TangMonk 你是指 install 时,除了安装你添加的新包,还安装了其他包吗?不确定你的服务器是否有历史问题。不过猜测可能以下几种情况:

    1.composer 的 json 和 lock 异常。例如有人更新了 composer.json,但没把 composer install 后重新生成的 composer.lock 一同提交到 Git。所以现在执行 install 会更新 lock 文件,并同步之前没有更新的包。

    2.composer 的 json 和 lock 正常,但服务器上安装不同步。例如曾经更新过依赖包,而服务器上 git pull 代码后,没有执行 composer install。所以现在执行 install 会同步之前没有更新的包。

    3.composer 的 json 和 lock 正常,服务器上安装也同步的。但是你没有认真看过 composer 文档或英文不好,误以为“ Discovered Package ”是重新安装。

    以上问题,你都可以再执行 composer install 看看输出结果,可以多执行几次,看看是否有提示“ Nothing to install or update ”。
    linxiaojialin
        17
    linxiaojialin  
       2019-09-04 10:11:03 +08:00
    @dvaknheo 是的,要保证各个环境安装的依赖是一致的。
    lp7631010
        18
    lp7631010  
       2019-09-13 14:13:27 +08:00 via iPhone
    你怕是不知道版本不同会不兼容这码事吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2072 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:53 · PVG 08:53 · LAX 16:53 · JFK 19:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.