没有依赖项的作曲家更新

时间:2016-08-23 10:55:02

标签: php yii2 composer-php yii2-advanced-app

enter image description here我在过去几周内使用yii2框架。但现在我的作曲家本身也遇到了一些问题。

仅供参考,我使用的是ubuntu 14.04

当我需要一些新的包/扩展时,我使用composer require命令添加composer。但我注意到有时它会从我的供应商和项目中删除一些现有的软件包。

我尝试了以下命令。

composer require dmstr/yii2-adminlte-asset "*"

composer require 2amigos/yii2-file-upload-widget:~1.0

还尝试了一些谷歌搜索。

http://www.yiiframework.com/wiki/672/install-specific-yii2-vendor-extension-dependency-without-updating-other-packages/

但它没有用。

有没有办法在不删除现有软件包或没有任何composer update命令的情况下将新软件包/扩展添加到现有的yii 2项目中?

Composer.json

{
    "name": "sganz/yii2-advanced-api-template",
    "description": "Improved Yii 2 Advanced Application Template By Sandy Ganz, Original by Nenad Zivkovic",
    "keywords": ["yii2", "framework", "advanced", "improved", "application template", "nenad", "sganz"],
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "tutorial": "http://www.freetuts.org/tutorial/view?id=6",
        "source": "https://github.com/sganz/yii2-advanced-api-template.git"
    },
    "minimum-stability": "dev",
    "prefer-stable":true,
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "nenad/yii2-password-strength": "*",
        "mihaildev/yii2-ckeditor": "*",
        "dmstr/yii2-adminlte-asset": "*"
    },
    "require-dev": {
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-debug": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*",
        "codeception/specify": "*",
        "codeception/verify": "*"
    },
    "config": {
        "vendor-dir": "protected/vendor",
        "process-timeout": 1800
    },
    "extra": {
        "asset-installer-paths": {
            "npm-asset-library": "protected/vendor/npm",
            "bower-asset-library": "protected/vendor/bower"
        }
    }
}

对此的任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

尝试

composer --no-update require dmstr/yii2-adminlte-asset:*

答案 1 :(得分:0)

要避免卸载其他扩展程序,请执行以下步骤。

1) "dmstr/yii2-adminlte-asset"  : "2.*" 
2) "2amigos/yii2-file-upload-widget": "~1.0"

到composer.json文件的require部分。

2) php composer.phar update

在Cmd中运行此命令。

答案 2 :(得分:0)

  1. 您的问题是,已删除的软件包不在require的{​​{1}}和require-dev部分。因此,我假设已移除的包以前是composer.json中任何其他包所需的(子),并且这些包的较新版本已被删除。这应该是正常的行为,应该对您的项目没有问题!

  2. 正如@Bizley已经表明,您可以在不更新旧要求的情况下添加要求:

    composer.json

答案 3 :(得分:0)

几天前我在安装一个包时遇到了这个问题,但是当我安装这个包时,所有的项目都更新了,我的项目坏了。所以我再次更换了我的最后一个供应商,所以我找到了一种更好更安全的升级包的安全方法:

  1. 将您的供应商存档到 zip 或 rar 文件并复制 composer.json。
  2. 将包添加到 composer 或使用 composer require 安装。
  3. 不要清除命令行屏幕并将其屏幕复制到 txt 文件中以查找版本
  4. 找到您的重要和主要软件包,如 yiisoft/yii2 和 .... 并复制它们的版本。
    为此,请打开 txt 文件并在升级行中搜索并找到如下内容:
    - Upgrading yiisoft/yii2 (2.0.39.3 => 2.0.41.1): Extracting archive 表示您当前的版本是 2.0.39.3,因此请在 composer.json 上复制此版本,如下所示:(没有 ~ 和 ^)
    "yiisoft/yii2": "2.0.39",
  5. 删除项目供应商文件夹并提取备份供应商,最后运行 composer installcomposer update

注意:在您的项目正常运行之前不要删除 vendor 和 composer.json 备份,然后您可以删除它们。
*这是一种手动升级供应商的方法,不要在重要框架更新中进行临时升级,例如 yii 发布了 Yii2.0.41 的我的项目更新。
一个非常重要的说明来自 here 的 yii 升级说明:

<块引用>

注意:本文档假设您已全局安装 composer,以便您可以运行 composer 命令。如果您的项目中有 composer.phar 文件,则需要在下面将 composer 替换为 php composer.phar。

提示:升级复杂软件项目的依赖项总是有破坏某些东西的风险,因此请确保您有备份(无论如何您都应该这样做;))。

因此直接运行 composer update 命令可能会像我一样破坏您的应用程序的一部分,以至于我的管理面板被破坏了。

祝你好运;)