Composer在错误的目录中安装jQuery组件

red*_*edd 6 cakephp composer-php

我正在尝试通过CakePHP应用程序中的Composer安装jQuery组件,composer.json:

{
    "name": "affiliate",
    "require": {
        "cakephp/cakephp": "2.5.*",
        "cakephp/debug_kit": "2.2.*@dev",
        "cakedc/utils": "dev-develop",
        "cakedc/search": "dev-develop",
        "friendsofcake/crud": "3.*",
        "components/jquery": "2.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}
Run Code Online (Sandbox Code Playgroud)

它会安装一些文件app/Vendor/components/jquery,但它也会在APP的根目录中创建并安装一些文件app/components/jquery.我想在供应商中拥有一个,我该如何解决这个问题?

mad*_*vid 17

components/jquery软件包使用组件安装程序,它可以从您composer.json指定的component-dir设置读取,这是您要放置下载组件的位置 - 例如在您的web/assets文件夹中:

{
    "require": {
        "components/jquery": "*"
    },
    "config": {
        "component-dir": "web/assets"
    }
}
Run Code Online (Sandbox Code Playgroud)

要了解更多相关信息,请查看此处的文档.

然后,您可以将web/assets中下载的组件文件添加到.gitignore中,这样就不会添加由程序包管理器加载的文件.

如果您不是这种方法的粉丝,那么另一个选择是您可以添加自己的包存储库到composer.json这样:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "jquery/jquery",
                "version": "2.1.1",
                "dist": {
                    "url": "http://code.jquery.com/jquery-2.1.1.js",
                    "type": "file"
                }
            }
        }
    ],
    "require": {
        "jquery/jquery": "2.1.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这种方法,composer将下载JS文件vendor/jquery/jquery/jquery-2.1.1.js- 然后您可以从www根目录添加符号链接.