Composer/Laravel:如何添加/更新特定的包

Posted

技术标签:

【中文标题】Composer/Laravel:如何添加/更新特定的包【英文标题】:Composer/Laravel: How to add/update a specific package 【发布时间】:2014-08-02 06:34:59 【问题描述】:

如何使用 Composer 添加/更新特定的包?我正在使用最新的 Laravel,也不确定它是否重要,但任何可以帮助确定答案的东西。

我还从我找到的旧 *** 帖子中尝试了以下内容,但它对我不起作用。它将包附加到 composer.json,然后继续更新所有内容。这是链接:How to update a single library with Composer?

这是我尝试添加到项目中的包:https://github.com/barryvdh/laravel-dompdf

非常感谢您的宝贵时间和帮助!

编辑:


Require 和 update 不起作用,它们也会更新所有内容。我是否有可能错误地运行命令?当谈到作曲家时,我仍然耳目一新:S

$ composer require barryvdh/laravel-dompdf
lease provide a version constraint for the barryvdh/laravel-dompdf requirement: *
/composer.json has been updated
oading composer repositories with package information
pdating dependencies (including require-dev)
 - Removing orchestra/testbench (v2.1.1)
 - Removing symfony/security (v2.4.3)
 - Removing symfony/translation (v2.4.3)
 - Installing symfony/translation (v2.4.6)
   Loading from cache

 - Removing symfony/http-foundation (v2.4.3)
 - Installing symfony/http-foundation (v2.4.6)
   Loading from cache

 - Removing symfony/event-dispatcher (v2.4.3)
 - Installing symfony/event-dispatcher (v2.5.0)
   Loading from cache

 - Removing symfony/debug (v2.4.3)
 - Installing symfony/debug (v2.4.6)
   Loading from cache

 - Removing symfony/http-kernel (v2.4.3)
 - Installing symfony/http-kernel (v2.4.6)
   Loading from cache

 - Removing symfony/routing (v2.4.3)
 - Installing symfony/routing (v2.4.6)
   Loading from cache

 - Removing symfony/process (v2.4.3)
 - Installing symfony/process (v2.4.6)
   Loading from cache

 - Removing symfony/finder (v2.4.3)
 - Installing symfony/finder (v2.4.6)
   Loading from cache

 - Removing symfony/dom-crawler (v2.4.3)
 - Installing symfony/dom-crawler (v2.4.6)
   Loading from cache

 - Removing symfony/css-selector (v2.4.3)
 - Installing symfony/css-selector (v2.4.6)
   Loading from cache

 - Removing symfony/console (v2.4.3)
 - Installing symfony/console (v2.4.6)
   Loading from cache

 - Removing symfony/browser-kit (v2.4.3)
 - Installing symfony/browser-kit (v2.4.6)
   Loading from cache

 - Removing swiftmailer/swiftmailer (v5.1.0)
 - Installing swiftmailer/swiftmailer (v5.2.0)
   Loading from cache

 - Removing stack/builder (v1.0.1)
 - Installing stack/builder (v1.0.2)
   Loading from cache

  - Removing patchwork/utf8 (v1.1.21)
  - Installing patchwork/utf8 (v1.1.23)
    Loading from cache

  - Removing nesbot/carbon (1.8.0)
  - Installing nesbot/carbon (1.9.0)
    Loading from cache

  - Removing monolog/monolog (1.9.0)
  - Installing monolog/monolog (1.10.0)
    Loading from cache

  - Removing symfony/filesystem (v2.4.3)
  - Installing symfony/filesystem (v2.5.0)
    Loading from cache

  - Installing symfony/security-core (v2.4.6)
    Loading from cache

  - Removing laravel/framework (v4.1.28)
  - Installing laravel/framework (v4.1.30)
    Loading from cache

  - Removing chumper/datatable (2.2.2)
  - Installing chumper/datatable (2.3)
    Loading from cache

  - Removing ivaynberg/select2 (3.4.6)
  - Installing ivaynberg/select2 (3.4.8)
    Loading from cache

  - Installing phenx/php-font-lib (0.2.2)
    Loading from cache

  - Installing dompdf/dompdf (v0.6.1)
    Loading from cache

  - Installing barryvdh/laravel-dompdf (v0.3.1)
    Loading from cache

symfony/security-core suggests installing symfony/validator (For using the user password constraint)
symfony/security-core suggests installing symfony/expression-language (For using the expression voter)
Generating autoload files
Compiling component files
Generating optimized class loader

【问题讨论】:

是否有任何具体原因说明您为什么只想更新单个包? 是的,我不希望更新所有内容,因为可能已经对可能会或可能不会破坏 Web 应用程序的各种包进行了更改,因此我不想冒险。我可能只是在 diff 目录中安装 composer 并添加我需要的包,然后我将它转移到我的主应用程序中的供应商。 【参考方案1】:

上述解决方案对我不起作用,但是如果有人仍然遇到这个问题

composer require <package> --no-update

添加包时这对我有用

【讨论】:

【参考方案2】:

我尝试了以下方法,它似乎对我有用。

您必须首先将barryvdh/laravel-dompdf 添加到composer.json 文件中。然后执行以下操作:

 composer update barryvdh/laravel-dompdf --lock

【讨论】:

我试过composer require,我试过composer update,每次我运行它们时都没有运气,它再次更新了一切。我已经粘贴了一个屏幕转储供您查看并指出我正在犯的愚蠢错误。 我已经用似乎对我有用的方法改变了答案。 我刚才也用--lock 试过了,它仍然会再次更新所有内容。我想知道是不是因为包的作者说要将它添加到作曲家,如下"barryvdh/laravel-dompdf": "*" 如果没有指定版本号,作曲家命令是否必须更改?即composer update "barryvdh/laravel-dompdf":"*" --lock。对不起,我只是不熟悉作曲家,所以我不确定我必须做什么,请原谅我的愚蠢。顺便说一句,非常感谢您的帮助! 在 1.6.3 版中使用 Composer 这实际上确实对我有用。但是,如果更新的包本身有一些要求,可能会有副作用。 Composer 当然会引入(更新)新的要求。我不确定现有需求、与其他库或应用程序共享的需求会发生什么。也许这也可能导致更新。这是not documentedAFAIK。【参考方案3】:

这里

composer update barryvdh/laravel-dompdf

composer docs

【讨论】:

如果你这样做,composer update 将更新 everything ,这就是 OP 的要求,而不是如何安装库 谢谢 0xshalaby,请参阅上面的帖子并发表评论,因为我对 requireupdate 都不满意 :(

以上是关于Composer/Laravel:如何添加/更新特定的包的主要内容,如果未能解决你的问题,请参考以下文章

Composer、Laravel 和本地包

text Linux + php + composer + laravel在服务器端

Composer Laravel 安装错误:您的需求无法解析为一组可安装的软件包

如何将 cuDNN 更新到较新版本?

如何在不删除适配器的情况下更新数据集以反映数据源中添加的列?

初入MAUI如何添加特定于平台的自定义,2种方式,多种语法