我有一个Laravel项目,我已经建立了一段时间。我想添加的功能不是主应用程序的一部分,但可以作为外接程序包添加,但是我不知道执行此操作的最佳方法。这些软件包将具有自己的路线,视图,模型和控制器。
我已经看过https://laravel.com/docs/5.7/packages和其他网站来创建Laravel软件包,但是最大的问题是,使用此设置,该软件包是通过composer.json加载的。每当我更新主应用程序并向主项目添加新的依赖项时,它将使用用户已注册的任何加载项覆盖用户composer.json。
有人可以指出正确的方向吗?
答案 0 :(得分:2)
您可能有两种方法来创建自己的插件
使用此软件包创建包含您自己的内容的模块- https://github.com/nWidart/laravel-modules
创建自己的程序包- https://wisdmlabs.com/blog/create-package-laravel/
您对开发软件包和丢失更改的疑问是不正确的。请阅读上述指南,并进一步研究如何在Laravel中开发软件包。
或者,您可以选择第一个选项,该选项更容易使用,也不会造成混乱,您可以在单独的文件夹中创建自己的模块并在应用程序中使用它。您也可以将其作为单独的模块共享。
,但是最大的问题是,通过这种设置,软件包是通过以下方式加载的 composer.json。每当我更新主应用程序并添加新的 对主项目的依赖,它将覆盖用户 composer.json及其已注册的任何加载项。
这不是事实。您对composer.json的整体用法和功能感到困惑。
创建自己的包/模块时,您将拥有自己的composer.json。如果添加新的依赖项或更新应用程序,则不会丢失更改。
每次添加新的依赖项或更新composer时,更改都会在composer.json上更新,而不会清除现有的软件包信息。您不必担心丢失更改。