【问题标题】:Yii2 Composer manage package in bower and bower-vendorYii2 Composer 在 bower 和 bower-vendor 中管理包
【发布时间】:2016-04-24 16:09:38
【问题描述】:

我已经使用 yii2 有一段时间了,但我无法理解如何管理我的包。在这方面我有两个问题。

  1. 当我将一个包添加到 yii2 时,它会在 vendor/bower/bower-assets 中下载。

  2. 当 yii2 发布包时,它会在 vendor/bower 下查找资产

我该如何解决这个问题。我为不同的项目安装了许多 yii2,我似乎每次都遇到同样的问题。

这是我的 composer.json 文件

{
    "name": "yiisoft/yii2-app-basic",
    "description": "Yii 2 Basic Project Template",
    "keywords": ["yii2", "framework", "basic", "project 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.0",
        "yiisoft/yii2": ">=2.0.5",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "dektrium/yii2-user": "0.9.*@dev"
    },
    "require-dev": {
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-debug": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*"
    },
    "config": {
        "process-timeout": 1800
    },
    "scripts": {
        "post-create-project-cmd": [
            "yii\\composer\\Installer::postCreateProject"
        ]
    },
    "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"
        }
    }
}

见下面我的 AppAsset 文件

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

【问题讨论】:

  • 那么您想将这些资产包含在您的资产包中吗?
  • @TNC 是的,我想包含这些资产或定义别名“@bower”以指向 vendor/bower/bower-assets,因为这是作曲家包的默认安装位置
  • 全局安装 fxp 资产插件。
  • @schmunk 我已经在全球范围内安装了 fxp 资产插件。我的主要问题是软件包已下载到“@vendor/bower/bower-assets”,但如果我覆盖别名“@bower”,所有应用程序都在“@vendor/bower”上发布资产。请指教
  • @chapskev 我经常看到这样的错误,当asset-installer-paths 未正确解析时,此设置应注意位置并由 fxp 的资产插件处理。但无论如何,作为一种解决方法,您可以尝试覆盖您提到的别名。

标签: yii2 composer-php


【解决方案1】:

这可以通过将 bower 包的默认别名路径(即 @vendor/bower 覆盖为 @vendor/bower/bower-asset)来归档。

这可以通过 $config=[] 下的 web.php 文件完成

 'aliases' => [
        '@bower' => '@vendor/bower/bower-asset',
    ],

当你回声时

echo Yii::getAlias('@bower');

它应该回显

/Library/WebServer/Documents/project-name/vendor/bower/bower-asset

【讨论】:

    【解决方案2】:

    我不久前遇到了这个问题,这让我发疯了!

    解决方案其实很简单(不是一直这样吗?)——你需要删除 Composer 公用目录中的 fxp 目录并清除 composer 缓存 - composer global clearcache - 并删除来自全局 composer.json 的 fxp 插件行并重新需要它。

    无论我做什么,bower 包都安装在 vendor/bower/bower-asset 或其他奇怪的地方。

    帮助我的解决方案是摆脱 fxp 插件并重新需要它。 试试看。

    Composer 资产插件有问题,但很有用。

    希望这会有所帮助! :)

    编辑: 您面临的问题只是 Composer 资产插件拒绝解析您的 composer.json 文件中明确定义的资产安装路径。 在我自己的项目中测试了行为之后,我创建了一个“香草”基本应用程序,甚至是一个高级应用程序:相同的行为。 所以,我重新要求/重新安装了资产插件并修复了它。

    【讨论】:

      【解决方案3】:

      这就是我们注册战利品资产的方式。

      namespace backend\assets;
      
      
      use yii\web\AssetBundle;
      
      class BootstrapAsset extends AssetBundle
      {
          public $sourcePath = '@bower/bootstrap/dist';
          public $js         = [
              'js/bootstrap.min.js',
          ];
      }
      

      并将此资产在您的布局中注册为:

      $asset     = AppAsset::register($this);
      $bootstrap = \backend\assets\BootstrapAsset::register($this);
      

      希望这会给你一个提示。

      【讨论】:

      • 感谢您的投入和贡献。我很感激。我不想创建资产包,我想更改核心文件路径,即 JQuery、Bootstrap 等。我找到了解决方法:) 谢谢
      猜你喜欢
      • 2018-06-14
      • 2019-04-06
      • 2014-10-14
      • 2016-03-27
      • 2023-04-10
      • 2015-07-26
      • 1970-01-01
      • 2015-04-11
      • 2014-05-20
      相关资源
      最近更新 更多