Jak uzyskać listę wszystkich zainstalowanych pakietów wraz z wersją w kompozytorze?

258

Pracowałem nad projektem przy użyciu Symfony 2.1 na moim komputerze lokalnym. Przesłałem go na mój serwer, ale kiedy próbuję zainstalować pakiety dostawcy za pomocą Composer, pojawia się wiele błędów zależności. Przypuszczalnie jest to związane z najnowszą wersją Symfony, która właśnie została wydana, a mój composer.jsonplik nie określa dokładnych numerów wersji.

Czy jest jakiś sposób, aby szybko wyświetlić numery wersji wszystkiego na moim komputerze lokalnym?

Oto mój plik composer.json (który działał dobrze jeszcze kilka dni temu):

{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.1.*",
        "doctrine/orm": ">=2.2.3,<2.4-dev",
        "doctrine/doctrine-bundle": "1.0.*",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.1.*",
        "symfony/swiftmailer-bundle": "2.1.*",
        "symfony/monolog-bundle": "2.1.*",
        "sensio/distribution-bundle": "2.1.*",
        "sensio/framework-extra-bundle": "2.1.*",
        "sensio/generator-bundle": "2.1.*",
        "jms/security-extra-bundle": "1.2.*",
        "jms/di-extra-bundle": "1.1.*",
        "sonata-project/admin-bundle": "*",
        "sonata-project/cache-bundle": "dev-master",
        "sonata-project/doctrine-orm-admin-bundle": "dev-master",
        "stof/doctrine-extensions-bundle": "1.1.x-dev",
        "sonata-project/user-bundle": "dev-master",
        "sonata-project/easy-extends-bundle": "dev-master",
        "friendsofsymfony/user-bundle": "2.0.x-dev",
        "friendsofsymfony/jsrouting-bundle": "*",
        "liip/imagine-bundle": "*",
        "simplethings/form-extra-bundle": "dev-master",
        "antimattr/google-bundle": "dev-master",
        "doctrine/doctrine-fixtures-bundle": "dev-master",
        "genemu/form-bundle": "2.1.*",
        "behat/behat":                  "2.4.*@stable",
        "behat/mink":                   "1.4.*@stable",
        "behat/symfony2-extension":     "*@stable",
        "behat/mink-extension":         "*@stable",
        "behat/mink-selenium2-driver":  "*@stable",
        "behat/mink-browserkit-driver":  "*",
        "liip/functional-test-bundle": "dev-master"
    },
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "minimum-stability": "dev",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web"
    },
    "config": {
        "bin-dir": "bin/"
    }
}
Dan
źródło

Odpowiedzi:

536

Możesz biegać composer show -i(skrót od --installed).

W najnowszej wersji wystarczy użyć composer show.

W -iopcji została zaniechana.

Możesz także użyć globalinstalacji kompozytora:composer global show

Seldaek
źródło
napisz to każdy, kto próbuje to uzyskać za pomocą composer.phar i php
Yashrajsinh Jadeja
9
Opcja „-i” jest teraz przestarzała. composer showdomyślnie wyświetla zainstalowany pakiet.
herve
I prawdopodobnie nie trzeba dodawać, że composer show --helpdrukuje wszystkie dostępne opcje.
Gerard Roche
52

Aby wyświetlić globalnie zainstalowane pakiety kompozytora:

composer global show -i
Ivan
źródło
20

Wyświetl listę zainstalowanych zależności:

  • Mieszkanie: composer show -i
  • Drzewo: composer show -i -t

-iskrót od --installed.

-tskrót od --tree.

ref: https://getcomposer.org/doc/03-cli.md#show

Vikyd
źródło
1
Dziękuję Ci. Uznałem również, że -tflaga jest bardzo przydatna
Oniya Daniel
12

Zachowanie tego polecenia zostało zmodyfikowane, więc nie musisz przekazywać -iopcji:

[10:19:05] coil@coil:~/workspace/api$ composer show -i
You are using the deprecated option "installed". 
Only installed packages are shown by default now. 
The --all option can be used to show all packages.
Cewka
źródło
10

Jeśli chcesz sprawdzić wersję tylko dla jednej, możesz to zrobić

composer show -- twig/twig

Zauważ, że teraz tylko zainstalowane pakiety są domyślnie wyświetlane, a opcja zainstalowana jest teraz przestarzała.

Jean-Luc Barat
źródło
6

Powyższa odpowiedź Iwana jest dobra:

composer global show -i

Dodano informacje: jeśli otrzymasz wiadomość podobną do:

Composer could not find a composer.json file in ~/.composer

... możesz nie mieć jeszcze zainstalowanych pakietów. Jeśli tak, możesz zignorować następną część wiadomości zawierającą:

... please create a composer.json file ...

... ponieważ po zainstalowaniu pakietu komunikat zniknie.

znak
źródło
2

Jeśli chcesz zainstalować Symfony2.2, możesz zobaczyć pełną zmianę na swoim composer.json blogu Symfony .

Po prostu zaktualizuj plik zgodnie z tym i uruchom composer updatepóźniej. To zainstaluje wszystkie nowe zależności i Symfony2.2 w twoim projekcie.


Jeśli nie chcesz aktualizować do Symfony2.2, ale masz błędy zależności, opublikuj je, abyśmy mogli Ci pomóc.

Wouter J
źródło
Okazało się, że problemy, które miałem, polegały na niezgodności między pakietem użytkownika FOS 2x a pakietem użytkowników sonat
Dan
1
@ Dan, myślę, że było tak, ponieważ SonataUserBundle nie został poprawnie skonfigurowany. Zostało to naprawione wczoraj.
Wouter J
0

Czy istnieje sposób na uzyskanie go za pomocą $ event-> getComposer () -> getRepositoryManager () -> getAllPackages ()

Sudo
źródło