作曲家过时而未安装

时间:2018-09-24 18:12:37

标签: composer-php

我想从一个项目中获取composer.lock(&.json),然后运行一些测试以查看其中是否有过时的软件包。

composer outdated似乎要求我先安装所有软件包, 但这有点矫over过正,因为所有必需的信息都应该在composer.lock-file中。

  1. 安装后是否有可用的信息,而锁文件中没有可用的信息?
  2. 是否可以在不运行composer install的情况下找到过时的软件包?

更新1

我将“ foolz / sphinxql-query-builder”作为一个项目的示例。

  • composer.json中有一个
    require['foolz/sphinxql-query-builder'] = '^1.0'
  • composer.lock中有一个
    packages[] = {name: foolz/sphinxql-query-builder, version: '1.0.2', ...}
  • ~/.cache/composer/repo/https---packagist.org/p-provider-2018-04.json中有一个providers['foolz/sphinxql-query-builder']->sha256
  • ~/.cache/composer/repo/https---packagist.org/provider-foolz\$sphinxql-query-builder.json中有一个
    packages['foolz/sphinxql-query-builder']->$version
  • 从该文件中我可以运行
    array_keys((array) $json->packages->{'foolz/sphinxql-query-builder'})
    以获得可用版本的列表。

    1. 那我该如何获取最新的'provider-foolz \ $ sphinxql-query-builder.json'文件?

1 个答案:

答案 0 :(得分:0)

  1. Composer.lock定义了软件包的确切版本,因此仅使用此文件您无法定义是否可以将软件包升级到新的标记版本 例如, 在composer.json中,您具有此版本的软件包 "laravelium/sitemap": "^3.0",

但是在composer json中存在此信息

{
            "name": "laravelium/sitemap",
            "version": "v3.0.1",
            "source": {
                "type": "git",
                "url": "https://gitlab.com/Laravelium/Sitemap.git",
                "reference": "b287ec4a6b47dcd63fd121199c05e059c479bc6f"
            },
            "dist": {
                "type": "zip",
                "url": "https://gitlab.com/api/v4/projects/Laravelium%2FSitemap/repository/archive.zip?sha=b287ec4a6b47dcd63fd121199c05e059c479bc6f",
                "reference": "b287ec4a6b47dcd63fd121199c05e059c479bc6f",
                "shasum": ""
            },
            "require": {
                "illuminate/support": "5.7.*",
                "php": ">=7.1.3"
            },
            "require-dev": {
                "orchestra/testbench": "3.7.*",
                "phpunit/phpunit": "~7.0"
            },
            "type": "library",
            "extra": {
                "laravel": {
                    "providers": [
                        "Laravelium\\Sitemap\\SitemapServiceProvider"
                    ]
                }
            },
            "autoload": {
                "psr-0": {
                    "Laravelium\\Sitemap": "src/"
                }
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Roumen Damianoff",
                    "email": "roumen@damianoff.com",
                    "homepage": "https://damianoff.com",
                    "role": "Developer"
                }
            ],
            "description": "Laravelium Sitemap package for Laravel.",
            "homepage": "https://laravelium.com",
            "keywords": [
                "Sitemap",
                "generator",
                "google-news",
                "html",
                "laravel",
                "laravelium",
                "php",
                "xml"
            ],
            "time": "2018-09-04T19:08:44+00:00"
        },

请注意,您将安装版本v3。{\ d +}(> = 3 && <4)(如果存在),并且新标记版本可能具有不兼容的更改

  1. composer show -l返回软件包列表。可以更新红色的软件包,而绿色是最新版本。

尽管如此,您还是需要继续composer install,因为只有这样,您才能了解已安装软件包的确切版本