为什么Laravel Spark安装在项目根目录中,然后符号链接到供应商?

时间:2017-02-03 13:34:19

标签: laravel composer-php laravel-spark

我注意到一个(对我而言)Laravel Spark用来安装自己的奇怪模式,我无法弄清楚为什么要这样做或被认为是好的做法。

行为

鉴于我们在目录/var/acme-spark中创建了一个Spark应用程序。

首先,Spark安装程序设置Laravel应用程序。之后,它将所有Spark文件(PHP源代码,前端资产,如LESS和JS文件,刀片模板和诸如此类)下载/安装到项目根目录中名为spark的目录中,即导入/var/acme-spark/spark 。然后,它会更新composer.json以包含以下内容:

{
// ...
    require: {
        // ...
        "laravel/spark": "*@dev"
    }
// ...
    "repositories": [
        {
            "type": "path",
            "url": "./spark"
        }
    ]
}

这基本上意味着:"获取spark目录并将其视为供应商存储库。然后为供应商中的spark目录创建一个符号链接。"

符号链接确实如下所示:

user@machine:~$ cd /var/acme-spark/vendor/laravel
user@machine:/var/acme-spark/vendor/laravel$ ls -l
cashier
framework
homestead
spark -> ../../spark

令人费解的部分

现在这令人费解,因为它让你可以完全控制Spark内核的所有内容,那么为什么要使用composer呢?另一方面,它会更新问题,因为您可能已经更改了内容并期望在更新期间不会覆盖它们。那么为什么不使用带有私有存储库的简单编写器包呢?

为什么这样做?这是好的做法吗?是或不是良好做法的原因是什么?

1 个答案:

答案 0 :(得分:2)

激发它不是作曲家包作为它的高级功能,因此你必须在某处添加repo,这样作曲家能够找到它并像普通的作曲家包一样安装。 Spark更新了自己,因此可以通过artisan命令完成它的可操作性。

关于良好实践,如何构建文件并不重要,如果最终工作,这没有性能问题,可以通过不同方式完成。

总之,之所以如此,是因为你无法直接从作曲家下载火花。