我注意到一个(对我而言)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呢?另一方面,它会更新问题,因为您可能已经更改了内容并期望在更新期间不会覆盖它们。那么为什么不使用带有私有存储库的简单编写器包呢?
为什么这样做?这是好的做法吗?是或不是良好做法的原因是什么?
答案 0 :(得分:2)
激发它不是作曲家包作为它的高级功能,因此你必须在某处添加repo,这样作曲家能够找到它并像普通的作曲家包一样安装。 Spark更新了自己,因此可以通过artisan命令完成它的可操作性。
关于良好实践,如何构建文件并不重要,如果最终工作,这没有性能问题,可以通过不同方式完成。
总之,之所以如此,是因为你无法直接从作曲家下载火花。