wireframe-framework/processwire-composer-installer

ProcessWire CMS/CMF 模块和网站配置的定制 Composer 安装程序。

1.1.1 2022-06-02 13:01 UTC

This package is auto-updated.

Last update: 2024-09-16 17:02:32 UTC


README

此项目包含用于 ProcessWire CMS/CMF 模块和网站配置的 Composer 自定义安装程序

它做什么,为什么我们需要它?

默认情况下,Composer 将所有包安装到 /vendor/ 目录。这对支持此类结构的软件来说很棒,但对像 ProcessWire 这样的项目来说却不是这样,它们期望某些内容位于特定位置:模块位于 /site/modules/module-name/ 下,而网站配置通常位于 /site/ 目录本身,如果没有安装系统,则为 /site-profile-name/,或者在原生多站点支持的情况下,为 /site-subsite-name/。

ProcessWire Composer Installer 当前对在 composer.json 文件中将它定义为依赖项的包进行两项“修正”

  • 模块 将安装在 ./site/modules/ModuleName/ 下(模块名称从 composer.json 中读取并转换为 PascalCase)
  • 网站配置 将安装在 ./site-profile-name/ 下(网站配置名称从 composer.json 中读取,并在需要时自动添加 site- 前缀)

特定于站点的模块支持

要注意的另一件事是,模块可以从 ProcessWire 安装的根目录或从 /site/ 目录本身安装。安装程序将自动确定您当前所在的位置,并相应地调整路径。

这样我们就可以根据每个网站安装模块(在多站点的情况下),或者将基于 Composer 的模块依赖项与网站配置一起安装(否则将需要手动修改 ProcessWire 根目录的 composer.json 文件,或者至少在根目录中运行 composer require 来安装这些依赖项。)

或者...

你可能听说过一个非常类似的项目,叫做 hari/pw-module。虽然这个项目和 Hari 的 ProcessWire 模块安装程序很相似,但还有一些关键的区别

  • 此项目允许你安装模块 网站配置
  • 此项目允许你从 /site/ 目录安装模块
  • 此项目在模块和网站配置的命名方面提供了一些额外的功能(以及 composer.json 选项),并且还包括自动格式化模块和网站配置目录名称的额外规则

用法

对于安装模块或网站配置的开发者

  • 要从 Packagist 添加新模块,请在 ProcessWire 根目录或您的 /site/ 目录中运行 composer require vendor-name/module-name
  • 要从 Packagist 添加新网站配置,请在 ProcessWire 根目录中运行 composer require vendor-name/site-profile-name

请注意,为了使此功能正常工作,相关的模块或网站配置必须将 wireframe-framework/processwire-composer-installer 作为依赖项。有关模块或网站配置作者的说明,请参阅下一部分。

自定义安装程序路径

默认情况下,网站配置安装在当前工作目录下,模块安装在 site/modules/(或者如果您已经在一个网站目录中,则是 modules/)。但是,您可以在项目的根 composer.json 中覆盖默认路径

{
  "require": {
    ...
  },
  "extra": {
    "pw-module-path": "site/modules",
    "pw-site-profile-path": "",
  }
}

对于模块或网站配置作者

本项目的使用非常简单。您只需执行以下步骤:a) 通过手动修改composer.json文件或在模块或站点配置根目录中运行composer require wireframe-framework/processwire-composer-installer,将wireframe-framework/processwire-composer-installer添加为项目依赖项;b) 在composer.json中定义您的包类型为pw-module(用于模块)或pw-site-profile(用于站点配置)。

以下是一个针对模块的简化版composer.json示例

{
    "name": "vendor-name/module-name",
    "type": "pw-module",
    "require": {
        "wireframe-framework/processwire-composer-installer": "^1.0.0"
    }
}

以下是一个针对站点配置的同样简化版composer.json示例

{
    "name": "vendor-name/site-profile-name",
    "type": "pw-site-profile",
    "require": {
        "wireframe-framework/processwire-composer-installer": "^1.0.0"
    }
}

为了方便安装模块,您还应该将它们添加到Packagist:[https://packagist.org.cn/](https://packagist.org.cn/)

需求

  • PHP 5.5或更高版本

为什么这个项目需要在composer.json中要求其他安装程序?

如果您想知道为什么我们目前将hari/pw-module作为本包的要求,尽管这实际上是一种变通方法,但其中确实有很好的理由。

  • Composer不允许我们定义包安装顺序,但它优先考虑Composer安装程序。
  • 如果有多个安装程序竞争安装一个包,则最后安装或加载的安装程序获胜。

通过将其他安装程序(目前仅为hari/pw-module)添加为本项目的依赖项,我们实际上迫使Composer在安装本项目之前先安装它,这反过来又允许我们在选择pw-*包的安装程序时覆盖其他安装程序。

许可证

本项目采用Mozilla公共许可证第2.0版授权。