Yii2 Composer在bower和bower供应商中管理软件包

Yii2 Composer在bower和bower供应商中管理软件包,yii2,composer-php,Yii2,Composer Php,我已经使用yii2有一段时间了,但我无法思考如何管理我的软件包。在这方面,我有两个问题 当我将包添加到yii2时,它将下载到vendor/bower/bower资产中 当yii2发布包时,它会在vendor/bower下查找资产 我该如何解决这个问题。我为不同的项目安装了许多yii2,每次都遇到同样的问题 这是我的composer.json文件 { "name": "yiisoft/yii2-app-basic", "description": "Yii 2 Basic Proj

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

  • 当我将包添加到yii2时,它将下载到vendor/bower/bower资产中

  • 当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',
        ];
    }
    

    这就是我们登记赃物资产的方式。
    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);
    

    希望这能给我们一个提示。

    这是我们注册战利品资产的方式。
    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);
    

    希望这会给您一个提示。

    可以通过覆盖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
    

    这可以通过覆盖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
    

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

    解决方案实际上非常简单(不是一直都很简单吗?)-您需要删除Composer公用目录中的fxp目录并清除Composer缓存-
    Composer global clearcache
    -并从global Composer.json中删除fxp插件行,然后重新要求它

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

    帮助我的解决方案是去掉fxp插件并重新要求它。 试试看

    Composer资产插件有缺陷,但很有用

    希望这有帮助!:)

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

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

    解决方案实际上非常简单(不是一直都很简单吗?)-您需要删除Composer公用目录中的fxp目录并清除Composer缓存-
    Composer global clearcache
    -并从global Composer.json中删除fxp插件行,然后重新要求它

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

    帮助我的解决方案是去掉fxp插件并重新要求它。 试试看

    Composer资产插件有缺陷,但很有用

    希望这有帮助!:)

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

    那么您想将这些资产包括在您的资产包中吗?@TNC是的,我想包括这些资产或定义别名“@bower”以指向vendor/bower/bower资产,因为这是composer Packages的默认安装位置全局安装fxp资产插件。@schmunk I已经在全球范围内安装了fxp资产插件。我的主要问题是,软件包已下载到“@vendor/bower/bower assets”,但所有应用程序都在“@vendor/bower”上发布资产,如果我覆盖别名“@bower”。好心的advise@chapskev我通常会看到这样的错误,当
    资产安装程序路径
    未正确解析时,此设置应考虑位置,并由fxp的资产插件处理。但无论如何,作为一种解决方法,您可以尝试覆盖您提到的别名。那么您想将这些资产包括在您的资产包中吗?@TNC是的,我想包括这些资产,或者定义别名“@bower”以指向vendor/bower/bower资产,因为这是composer Packages的默认安装位置全局安装fxp资产插件。@schmunk i已经在全球范围内安装了fxp资产插件。我的主要问题是,软件包已下载到“@vendor/bower/bower assets”,但所有应用程序都在“@vendor/bower”上发布资产,如果我覆盖别名“@bower”。好心的advise@chapskev我通常会看到这样的错误,当
    资产安装程序路径
    未正确解析时,此设置应考虑位置,并由fxp的资产插件处理。但无论如何,作为一种解决方法,您可以尝试覆盖您提到的别名。感谢您的输入和贡献。我很感激。我不想创建资产包,我想更改核心文件路径,即JQuery、Bootstrap e.t.c。我找到了一个解决方法:)感谢您的输入和贡献。我很感激。我不想创建资产包,我想更改核心文件路径,即JQuery、Bootstrap e.t.c。我找到了解决方法:)谢谢