2014-09-05 94 views
4

我试图通过作曲CakePHP中的应用程式安装jQuery的元件,composer.json:作曲家安装jQuery的成分在错误的目录

{ 
    "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/" 
    } 
} 

而且它在app/Vendor/components/jquery安装一些文件,还创建并安装APP根目录中的一些文件 - app/components/jquery。我想要所有的供应商之一,我该如何解决?

回答

12

components/jquery包使用component-installer,这可以从composer.json指定component-dir设置这是你想要把下载的组件读 - 例如在web/assets文件夹:

{ 
    "require": { 
     "components/jquery": "*" 
    }, 
    "config": { 
     "component-dir": "web/assets" 
    } 
} 

想了解更多关于此次检查出的文档here

然后,您可以将这些下载的Web /资产中的组件文件添加到.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" 
    } 
} 

采用这种方法,作曲家将下载JS文件到vendor/jquery/jquery/jquery-2.1.1.js - 然后您可以从www根目录中为此添加一个符号链接。

+1

完美,谢谢!我选择了第一个解决方案,因此'component/jquery'实际上是'ivaynberg/select2'的依赖关系,因此只更改'component-dir'就简单多了。 – redd 2014-09-05 15:45:34

+0

希望我们可以将这些内容传递给/ dev/null。使用资产,我更愿意从实际的供应商文件夹中提取特定的部分。感谢这一点,但现在我至少可以将它从根目录中解脱出来。 – Saeven 2015-05-01 19:40:45