【问题标题】:Yii2: use fxp assets plugin or asset-packagist?Yii2:使用 fxp assets 插件还是asset-packagist?
【发布时间】:2023-04-05 12:47:01
【问题描述】:

似乎 yii2 之间存在一些未解决的冲突 使用asset-packagist.org 方法,或更旧的 fxp 资产插件。 我现在正在处理一个项目,旨在使用 资产打包师。所有设置看起来都OK,但Yii2似乎忽略了 这一切,并坚持使用不存在的凉亭目录。 使用asset-packagist方法,这个目录叫做bower-asset。

设置:为了完成这项工作,我们使用(在 common/config/base.php 中):

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

...在 composer.json 我们设置:

 "repositories": [
{
    "type": "composer",
    "url": "https://asset-packagist.org"
}
],

这无济于事,但仍然出现错误:

 The file or directory to be published does not exist: 
 C:\....common\config/../../vendor/bower/semantic/dist

还尝试使用(在 composer.json 中)关闭 fxp:

 "config": {
"fxp-asset": {
        "enabled": false
    }
  },

也试过命令:

 composer global remove fxp/composer-asset-plugin  --no-plugins

同样的事情。

注意:该项目是在 Linux 中开发的,我现在尝试在 Windows 10 和本地主机上的 XAMPP 中打开它。如果与 Windows 相关,请随时告诉我。

【问题讨论】:

  • 再次检查你的配置——如果 Yii 试图访问vendor/bower/semantic/dist,那么你的'@bower' => '@vendor/bower-asset' 似乎被忽略了。或者您在某处硬编码了 vendor/bower 路径。
  • 您好,谢谢。没有什么是硬编码的。但我发现:如果我将目录重命名为“bower”,它现在会说:“要发布的文件或目录不存在:C:\..common\config/../../vendor/凉亭资产/jquery/dist”!注意,现在它是 jquery,而不是语义(并且目录存在!)

标签: linux windows composer-php bower yii2-advanced-app


【解决方案1】:

为了让它工作,我不得不选择 fxp 插件,并放弃资产打包方式(它根本行不通,鉴于我目前所掌握的知识),如下所示:

  • 从 composer.json 的存储库部分中删除了对 asset-packagist.org 的引用(在我的情况下,我删除了整个存储库部分。:
   "repositories": [
    {
    "type": "composer",
    "url": "https://asset-packagist.org"
    }
    ],
  • 安装最新的 composer fxp-plugin,目前为 1.4.6:

composer 全局需要 "fxp/composer-asset-plugin:~1.4.6"

  • 删除了 common/config/base.php 中的 @bower -> bower-asset(以及 npm 的别名)。
  • 然后,如果您将 vendor 中的 bower-asset 文件夹重命名为“bower”,它会找到正确的路径。但是您永远不应该更改供应商文件夹中的任何内容,而是将此 fxp-asset 部分添加到 composer.json 中的“config”:
 "config": {
            "process-timeout": 1800,
            "fxp-asset":{
                "installer-paths": {
                    "npm-asset-library": "vendor/npm",
                    "bower-asset-library": "vendor/bower"
            }
        }
    }
  • 然后删除 vendor 文件夹,删除 Composer.lock 文件并运行 composer install

【讨论】:

  • 您是否尝试过删除vendor 目录并运行composer install 切换到fxp-plugin 之前?
  • 没有。我在 composer install 之前运行了 fxp 插件安装。
  • 您应该尝试一下 - 看起来整个问题是因为当 fxp-plugin 存在时(并且配置了 vendor/bower 路径)并安装了部分依赖项,您的部分依赖项已经安装当使用asset-packagist 时(并且vendor/bower-asset 是配置路径)。重新安装整个vendor 应该可以解决这些问题,因此您可以使用asset-packagist.org。
  • 现在我从头开始在 Ubuntu 虚拟机上重新做了整个事情,这一次完全确定没有 fxp-plugin 存在,但同样的事情发生了。
猜你喜欢
  • 2016-12-05
  • 2016-10-24
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 2023-04-05
  • 2021-07-18
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多