[Yii2] Composer bower-asset 更新失敗解法

遇到的Composer update問題:

yiisoft/yii2 2.*.* requires bower-asset/jquery *.*.*@stable | ... -> no matching package found.

Yii官網解:composer global require fxp/composer-asset-plugin

本篇是針對不使用Plugin提供解法。


原因:

bower-asset在Packagist已經是Virtual Package,以下為bower因果:

Update: bower 在 0.9.0 版以前可以使用 component.json,但是為了避免跟其他工具命名衝突,故 0.9.0 以後版本請改為 bower.json bower 是 Twitter 團隊開發的一套網頁工具,用來管理或安裝 Web 開發所需要的 Package,像是 CSS 和 JavaScript,也可以依據套件的相依性來安裝,簡單來說,開發者不用再去煩惱套件相依性問題,以及時間久了想更新最新版本,還要到各 Package 網站來下載,這些步驟都省了,一個指令就可以全部做完上述的步驟。


解法:

解法一:略過bower-asset不安裝

yidas/yii2-composer-bower-skip

可以使用yidas/yii2-composer-bower-skip來略過bower-asset更新Composer:

composer.json內,yiisoft/yii2之前加入yidas/yii2-composer-bower-skip

"require": {
    "php": ">=5.4.0",
    "yidas/yii2-composer-bower-skip": "~2.0.0",
    "yiisoft/yii2": "~2.0.5",
    "yiisoft/yii2-bootstrap": "~2.0.0"
}

之後執行composer update解決!


解法二:原始Composer bower-asset安裝包

Yii2 Bower Asset

composer.json內,yiisoft/yii2之前加入yidas/yii2-bower-asset

"require": {
    "php": ">=5.4.0",
    "yidas/yii2-bower-asset": "~2.0.0",
    "yiisoft/yii2": "~2.0.5",
    "yiisoft/yii2-bootstrap": "~2.0.0"
}

README目前提供三種安裝方式,以下介紹第一種:

$config = [
    ...
    'aliases' => [
        '@bower' => '@vendor/yidas/yii2-bower-asset/bower'
    ],
    ...
];

provide原理:

"provide": {
    "bower-asset/jquery": "*",
    "bower-asset/jquery.inputmask": "*",
    "bower-asset/punycode": "*",
    "bower-asset/yii2-pjax": "*",
    "bower-asset/bootstrap": "*",
    "bower-asset/typeahead.js": "*"
}

懶人安裝:

yidas/yii2-app-basic

composer create-project --prefer-dist yidas/yii2-app-basic

yidas/yii2-app-advanced

composer create-project --prefer-dist yidas/yii2-app-advanced

包含了yidas/yii2-composer-bower-skip

One thought on “[Yii2] Composer bower-asset 更新失敗解法

Leave a Reply

Your email address will not be published. Required fields are marked *