【问题标题】:Composer install package with dev dependencies具有开发依赖项的 Composer 安装包
【发布时间】:2018-03-04 03:28:24
【问题描述】:

如何安装带有 dev 依赖项的 composer 包?

例如:

当我有这个包裹时:

https://github.com/spatie/laravel-demo-mode

然后我跑:

composer require spatie/laravel-demo-mode

tests 文件夹没有安装?!

【问题讨论】:

  • 你发布了配置文件吗?你有没有放 Route::demoAccess('/demo');在你的路线文件中?
  • 是的,但这与我的问题无关。我想贡献,但是当我运行 composer require spatie/laravel-demo-mode 时测试文件夹不存在
  • 当你运行composer时,你从composer服务器获取文件,而不是从github

标签: php laravel


【解决方案1】:

简而言之,您(永远)不会。如果你想贡献,你需要设置新的 Laravel 项目并设置 composer 来自动加载你的包版本,从你的 fork 或从你的磁盘上的某个地方。当你这样做时,你只是在使用你的包版本(同样没有可能运行包的测试)。

为了运行包的测试,您需要将目录更改为包的根目录并安装其依赖项 ($ composer install),完成后您可以运行 $ phpunit


当我想贡献时,我通常会做的是:

  • 准备好空的 Laravel 项目(未版本化)
  • 在根目录中有packages 文件夹
  • 在那个packages文件夹中我通常做$ git clone <repo fork>(一次可能不止一个包)
  • 如果我想运行包的测试,我会执行 $ composer install$ phpunit(您的 IDE 可能会因为重复定义而对您发出警告,但您可能会忽略它)
  • 改进和测试packages文件夹中的package代码
  • 立即在 Laravel 项目中“实时”测试您的更改

composer.json 可能看起来像:

...
"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Vendor\\Package\\": "packages/path-to-src/"
    }
},
...

您可能会发现这个示例 repo 很有用,我使用 https://github.com/Kyslik/column-sortable-example 来演示如何使用我维护的包。主要看一下文件夹结构composer.json。

在如何做贡献方面可能有更好的方法,但我只找到(并开发)了这个。


如果我有一些小的改变(比如拼写错误,或者只是返回类型或任何“小”),我会在供应商文件夹中更改包,看看它是否会破坏任何东西;之后,我 fork 包源并在 Github 的 Web 界面中编辑更改。要清理,只需从 Laravel 项目的根文件夹中运行 $ composer install/update

【讨论】:

  • 非常感谢!
  • @Jenssen 我确实编辑了我的答案(底部),如果您进行微小的更改,可能对您更好。
猜你喜欢
  • 2017-06-28
  • 2016-04-10
  • 2017-10-31
  • 2018-12-23
  • 1970-01-01
  • 2015-01-24
  • 2018-02-02
  • 2018-07-01
  • 1970-01-01
相关资源
最近更新 更多