不能在 Yii2 项目上 运行 'composer update':yiisoft/yii2 2.0.7 需要 bower-asset/jquery 2.2.*@stable

Cannot run 'composer update' on Yii2 project: yiisoft/yii2 2.0.7 requires bower-asset/jquery 2.2.*@stable

我删除了我的 vendor/ 目录和 运行 composer update,但它给我一个错误。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package bower-asset/jquery could not be found in any version, there may be a typo in the package name.
  Problem 2
    - yiisoft/yii2 2.0.7 requires bower-asset/jquery 2.2.*@stable | 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.6 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.5 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.4 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.3 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.2 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.1 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - yiisoft/yii2 2.0.0 requires bower-asset/jquery 2.1.*@stable | 1.11.*@stable -> no matching package found.
    - Installation request for yiisoft/yii2 * -> satisfiable by yiisoft/yii2[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

我什至尝试手动添加 "bower-asset/jquery": "*", 但没有帮助。

composer.json
{
    "name": "yiisoft/yii2-app-basic",
    "description": "Yii 2 Basic Application Template",
    "keywords": ["yii2", "framework", "basic", "application template"],
    "homepage": "http://www.yiiframework.com/",
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "minimum-stability": "stable",
    "require": {
        "php": "~5.4",
        "ext-gd": "*",
        "ext-soap": "*",
        "ext-mcrypt": "*",
        "ext-mbstring": "*",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "yiisoft/yii2-redis": "~2.0",
        "yiisoft/yii2-debug": "*",
        "bower-asset/jquery": "*",
        "exeu/apai-io": "*",
        "mervick/yii2-mthaml": "*",
        "googleads/googleads-php-lib": "~6.5"
    },
    "require-dev": {
        "heroku/heroku-buildpack-php": "*",
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*"
    },
    "config": {
        "process-timeout": 1800
    },
    "scripts": {
        "post-create-project-cmd": [
            "yii\composer\Installer::postCreateProject"
        ],
        "compile": "php yii asset assets.php config/assets-prod.php"
    },
    "extra": {
        "yii\composer\Installer::postCreateProject": {
            "setPermission": [
                {
                    "runtime": "0777",
                    "web/assets": "0777",
                    "yii": "0755"
                }
            ],
            "generateCookieValidationKey": [
                "config/web.php"
            ]
        },
        "asset-installer-paths": {
            "npm-asset-library": "vendor/npm",
            "bower-asset-library": "vendor/bower"
        }
    },
    "autoload": {
      "classmap": [
        "vendor/googleads/googleads-php-lib/src/Google/Api/Ads/Common/Util"
      ]
    }
}

那个包似乎存在。

$ composer search bower | grep jquery
bower-asset/jquery

我删除了 "bower-asset/jquery": "*" 行和 运行 composer global require fxp/composer-asset-plugin --no-plugins 然后 composer update worked。作曲家似乎很烂。我希望它对 Ruby 和 gem 一样好用。

你应该先运行

composer global require "fxp/composer-asset-plugin:1.*"

此命令安装 composer 资产插件,它允许通过 Composer 管理 bower 和 npm 包依赖项。

作为 said Yii 的贡献者之一

We're going to fix that in 2.1.

如果您不想使用插件为 Yii2 安装 Bower,您可以尝试 yii2-bower-asset

这个包已经为 Yii2 修复了 Bower,它将 Bower 和 Composer 分开。

但是Yii在2.1版本会改用Asset Packagist而不是Plugin,现在不会了。

https://github.com/yidas/yii2-bower-asset