【问题标题】:Composer, move files from /vendor/ folderComposer,从 /vendor/ 文件夹中移动文件
【发布时间】:2014-03-16 14:16:09
【问题描述】:

我刚刚开始在 PHPStorm 中使用 composer,因为我厌倦了手动从 github 下载依赖项。但是有些事情我无法理解。

Composer 总是将文件下载到 /vendor 文件夹中。就像我添加 Twitter Bootstrap - 它将被下载到 /vendor/twitter/bootstrap 文件夹。但我需要它进入我的 /webroot/bootstrap/ 目录。你如何移动这些文件?因为如果我手动移动它 - 它们以后不会使用 composer update 命令更新。

或者,如果我使用 micro php framevork slim。我添加了 slim/slim 依赖项。但是会被放到 /vendor/slim/slim/...

那我该怎么办?使用 Phing 或其他一些部署工具将文件从 /vendor 移动到所需的目的地?你用什么?

这并不完全是我需要的,但它适用于 css/js/etc。 http://www.phpclasses.org/blog/package/8429/post/1-Using-Composer-to-Install-JavaScript-CSS-and-Images-Under-the-Web-Document-Directory.html

【问题讨论】:

  • 您可以简单地require vendor/autoload.php; 然后目录在哪里 并不重要。
  • Slim 在供应商文件夹中有什么问题?对于 webroot 资源,我使用 bower 而不是 composer,或者您可以将文件符号链接到 webroot 目录。
  • @Jack,不完全是。我正在寻找最佳实践,因为我不习惯作曲。如果移动文件不好 - 好的,我想知道正确的开发方式。
  • @Alexey:我的错。我应该使用文件夹而不是地图。 Composer 将<project root>/vendor/ 用于第三方代码,您可以将<project root>/src 用于您的源代码。这样您就可以将它们分开。

标签: php composer-php phpstorm


【解决方案1】:
"config": {
    "vendor-dir": "path/to/wherever"
},

在您的 composer.json 文件中

【讨论】:

  • 这救了我!使用 Netbeans 作曲家与供应商一样处于根目录中。但是,如果您像我一样创建了文件夹,例如。 code 仅用于项目的代码部分,最终将被 rsync-ed 到生产服务器,通过此配置,我已将供应商移至代码子目录 code/vendor/ 将作曲家保持在 nb 项目的根目录中。
  • 不幸的是,类映射无法根据 ENV(开发、生产)更改。在本地有代码,但在生产中没有。
【解决方案2】:

documentation 声明您可以这样做:

{
    "extra": {
        "installer-paths": {
            "sites/example.com/modules/{$name}": ["vendor/package"]
        }
    }
}

【讨论】:

  • 是的!谢谢你。但这仅适用于使用 composer/installers 的软件包。
【解决方案3】:

此问题已回答here。

Vendor 目录是 Composer 的约定。良好的编程习惯是更喜欢约定而不是配置。您可以使用 Composer 以多种方式引用您的文件和类。

【讨论】:

  • 我不相信 OP 的问题在这里或您所指的问题中得到了回答。我认为 OP 有一些供应商文件应该位于 web 根目录之外,而其他文件(如 bootstrap、angular 等)显然需要位于 web 根目录下 - 所以一个项目有两个供应商目的地
  • 正如 JannieT 所说。这不是原始问题的答案。提示也是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多