【问题标题】:Take a created laravel app, a way to create something like 2 apps that share a core?以创建的 laravel 应用程序为例,一种创建类似 2 个共享核心的应用程序的方法?
【发布时间】:2017-06-11 21:38:01
【问题描述】:

我创建了一个 laravel 5.3 慈善应用

现在客户告诉我:

我想再次拥​​有相同的应用,但仅限于某些事情,例如,相同的应用,但仅限于对自然的慈善捐赠。所以新的标志,不同的电子邮件等等

有什么好的方法可以在两个应用程序之间共享更新,而不必重做所有提交并在每个子项目中手动合并提交?

我想也许你有一个核心项目,并且单独的 git repo 只包含你想在上述应用程序中覆盖的文件......不完全确定要使用什么工具等,或者是否有更智能的东西。

编辑 我考虑从应用程序 A 创建一个包含应用程序 A 的所有内容的服务提供程序,并通过 composer 包使其可用。现在 app CLONE 将使用这个服务提供者/作曲家包。当我对应用程序 A 的服务提供者进行更新时,我只是在我克隆的应用程序中运行作曲家更新。问题: 如果更新需要数据库迁移怎么办?

【问题讨论】:

    标签: git laravel laravel-5 deployment


    【解决方案1】:

    一个好的方法是设置两个 Laravel 应用程序,然后构建一个包含所有核心组件的 Composer 包。

    您可以轻松链接到 Composer 中托管在私有存储库中的包,完全绕过 Packagist。

    composer.json 文件中设置它非常简单。 应用程序编写器文件将遵循这种模式:

    {
        "type": "project",
        "repositories": [
            {
                "type": "git",
                "url": "git@github.com:your/package.git"
            }
        ],
        "require": {
            "your/package": "dev-master",
            ...
        }
    }
    

    虽然普通的包会遵循这个:

    {
        "name": "your/package",
        "autoload": {
            "psr-4": {
                "YourPackage\\": "src/"
            }
        }
    }
    

    然后只需将任何常见的类/帮助程序提交到 your/package.git 存储库,您就可以轻松地在两者中访问它们。

    【讨论】:

    • 再想一想,我似乎很难定义什么是核心。基本上,新应用程序可能应该像旧应用程序的子应用程序一样,基本上所有东西都可以从旧应用程序(调度程序、电子邮件、视图、路由、迁移、一切)中获得,然后我可以只手动覆盖我想要的东西改变。现在作曲家包是一个聪明的主意,但我不完全确定如何覆盖东西。我必须创建服务提供商吗?合同/外墙?
    • 您需要将所有内容构建为独立组件,而不是针对每个应用程序。
    【解决方案2】:

    您可以使用 git 替代和浅克隆功能在 repos 之间共享对象。当用户 fork 一个 repo 时,github 会这样做以节省存储空间。

    基本上,替代功能为 git 提供了一个路径名来查找对象。虽然浅克隆(可以在本地完成)为您提供了一定数量的提交历史记录,您可以使用 depth 选项指定。

    方便地, git clone 可以为您设置备用路径。您将运行的命令应如下所示:

    git clone -l -s [原始仓库的路径]

    请注意,我没有在命令中包含深度选项。

    这里是替代文档:https://git-scm.com/docs/gitrepository-layout 这是克隆的文档:https://git-scm.com/docs/git-clone

    【讨论】:

      【解决方案3】:

      在这种情况下,将站点转换为多租户。这允许在通过同一堆栈(从数据到表示层)操作时提供完全独立的内容。看到这个包:

      https://github.com/HipsterJazzbo/Landlord

      这也将让您免去管理独立迁移的麻烦,因为两个站点将使用相同的数据库结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-12
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-06
        • 1970-01-01
        相关资源
        最近更新 更多