允许开源项目的用户将自己的文件添加到其副本中

时间:2013-09-11 20:56:11

标签: php git open-source updates composer-php

所以我正在创建一个semi-popular open source project,并且正在寻找用户自定义副本的方法。

基本上我没有使用Composer和使用git子模块的经验。我将此文件结构推送到git:

/ROOT
----/subdirectory/
---------/another.file.php
----/main.class.php
----/config.default.php

用户能够将config.default.php复制到同一目录,将其重命名为config.php(并通过覆盖默认配置值)是理想的 - 我希望他们能够将自己的文件添加到/subdirectory/,允许他们将工具扩展到他们独特的要求。

我的问题是,拉(在git子模块的情况下)或执行Composer更新时,不要修剪这些文件吗?如果是这样,我如何尽可能少地为最终用户实现要求:

  1. 单个可选的可自由编辑的配置文件
  2. 可包含用户创建的文件的两个目录
  3. 以上更改保留在用户自己的版本控制系统中,并且在获取新版本时不会被删除。
  4. 感谢您提前耐心等待。

2 个答案:

答案 0 :(得分:3)

目前大多数应用程序框架/ CMS正在执行的操作是将此过程分为两个包:

  • 一个包含大量代码的库包(例如symfony / symfony,laravel / framework),它将安装在vendor /
  • 一个“bootstrap”包(例如symfony / framework-standard-edition,laravel / laravel),其中包含用户可以从中开始的应用程序shell。这将包含默认配置和composer.json,其中包括库包+“require”部分中需要的任何其他内容。此引导程序包通常不会通过composer更新,因为它将成为用户的应用程序/站点。因此,它应该包含尽可能少的代码,并且基本上只是配置。

答案 1 :(得分:0)

您目前在课程加载时加载了用户配置:

if ( is_readable( KINT_DIR . 'config.php' ) ) {
    require KINT_DIR . 'config.php';
}

如果你添加了一个公共setConfig()属性,那么配置可以位于任何地方,你的默认设置仍然可以工作(代码离开我的头顶):

Public static function setConfig($config) {
    if ( is_readable( $config ) ) {
        require $config;
    }
}