使用composer安装laravel软件包而不更新依赖关系

时间:2020-07-10 11:57:48

标签: php html laravel composer-php laravel-5.8

我想在laravel 5.8中安装zizaco / entrust软件包,在他们的github页面中,据说在composer.json文件中包含“ zizaco / entrust”:“ 5.2.x-dev”并运行 composer update 命令。我这样做如下,并运行了composer update命令。

"require" : {
        "php" : "^7.1.3",
        "fideloper/proxy" : "^4.0",
        "laravel/framework" : "5.8.*",
        "laravel/tinker" : "^1.0",
        "laravel/ui" : "^1.2",
        "maatwebsite/excel" : "^3.1",
        "zizaco/entrust" : "5.2.x-dev"
    },

但是 composer update 命令会在安装zizaco / entrust软件包时将所有软件包更新为最新版本(这些软件包,我在“ require”字段中包含了这些软件包)。如果最新更新的软件包中存在一些编码错误,那么整个站点可能会崩溃。仅供参考,运行上述命令后,我看到本地git显示了供应商文件夹下文件夹中许多文件的更改,这意味着软件包中有一些更新了吗?因此建议运行 composer install 命令,以使那些依赖软件包不会更新到最新版本。

因此,在我的情况下,如上所述,在composer.json的require字段中包含“ zizaco / entrust”:“ 5.2.x-dev”后,如果我运行 composer install ,则不会安装zizaco / entrust软件包。此外,如果我运行 composer需要zizaco / entrust 5.2.x-dev ,那么它仍然会安装最新版本的依赖项软件包。

那么,如何防止安装composer.json文件中“ require”字段中包含的最新版本的依赖项软件包,而仅安装zizaco / entrust软件包。

这样,我的laravel 5.8网站就不会因为故障代码或任何最新版本而将任何软件包更新到最新版本而中断。处理这种情况非常重要,因为我们需要在laravel网站中安装软件包以满足各种需求。

3 个答案:

答案 0 :(得分:0)

改为运行composer install。或者,您可以使用composer require <package name>

Composer install在composer.lock中查找 exact 版本,仅在composer.json中查找缺少的软件包。

Composer update将在composer.json中查找版本约束,这大致表示“ a range of versions”。这就是为什么要安装不同版本的原因。

答案 1 :(得分:0)

步骤1: 您只需要将package添加到composer.json文件并运行命令:

composer install

composer install将检查并安装新软件包,此外还会检查其他软件包中的所有旧版本。

第2步:

您可以直接在作曲家中运行命令

composer require package/name

例如,如果我需要install firebase,请从项目根目录运行以下命令:

composer require firebase/php-jwt

从终端安装新软件包会自动将其添加到composer.json文件中,并且不会更新以前安装的软件包。

希望这会有所帮助!

答案 2 :(得分:0)

您有两种选择:使用composer require指定要安装的软件包,或手动更新composer.json文件并使用composer update [package]

Composer Require

composer require zizaco/entrust:5.2.x-dev

这将自动更新您的composer.json文件并安装指定的版本。这不会更新您的任何其他依赖项。虽然文档指定软件包和版本应该用冒号(:)隔开,但我用空格对其进行了测试,并且看来可以使用。

Composer Update [package]

composer update zizaco/entrust

如果您手动更新了composer.json文件,则需要运行composer update并指定要更新的软件包。如果您指定要更新的软件包,则只​​会影响该软件包。当您不指定要更新的软件包时,composer会查找所有软件包的更新。

关于Composer Install的提示

composer install在这里无济于事。如果您已经有一个composer.lock文件(因为您只是尝试添加新软件包,将使用该文件),则composer install仅查看您的composer.lock文件并尝试安装所有在这里定义。这意味着,如果您手动更新composer.json文件并运行composer install,它将不会安装您指定的新要求。

只有当您没有composer.lock文件时,composer install才会尝试解析依赖性并安装它们。