picocms / composer-installer
一个负责为Pico安装插件和主题的Composer插件,Pico是一个简单、快速、基于平面文件的CMS。
This package is auto-updated.
Last update: 2024-08-27 22:06:02 UTC
README
这是Pico官方Composer安装程序的仓库。
Pico是一个简单、快速、基于平面文件的CMS。更多信息请访问http://picocms.org/。
此Composer插件负责使用Composer包管理器(即在命令行上运行composer install
)安装Pico插件和主题。它负责识别为{ "type": "pico-plugin" }
和{ "type": "pico-theme" }
的包,并指示Composer将这些包安装到Pico的plugins/
和themes/
文件夹。
安装程序还会创建一个包含所有已安装Pico插件及其相应PHP类的vendor/pico-plugin.php
文件(需要post-autoload-dump
事件,见下文“安装”部分)。该文件用于Pico 2.0+在运行时加载此类插件,甚至允许您完全禁用基于文件系统的插件加载。只需确保在您的composer.json
中添加适当的自动加载部分 - 否则Pico将找不到您的插件PHP类。
安装程序的行为可以在插件、主题的composer.json
和根包的composer.json
中完全配置(见下文“用法”部分)。
有关如何贡献或获取帮助的信息,请参阅picocms/Pico
。
安装
如果您已经使用了Pico的官方composer启动项目(picocms/pico-composer
),您的网站composer.json
(“根包”)已经依赖于picocms/composer-installer
。如果不是这样,请运行以下命令从Packagist.org加载它
$ composer require picocms/composer-installer:^1.0
Composer插件尝试自动注册自身为post-autoload-dump
事件。这是安装程序创建vendor/pico-plugin.php
的前提条件。如果安装程序成功执行此操作,您将看到以下三行,当您运行composer install
或composer update
Generating autoload files
> Pico\Composer\Installer\PluginInstaller::postAutoloadDump
Creating Pico plugins file
如果您只看到前两行而没有第三行,请确保您的网站在根包的composer.json
中将自身标识为{ "type": "project" }
,并且直接依赖于picocms/composer-installer
。如果您只看到第一行,请通过在GitHub上创建一个新的问题来告知我们。要解决此问题,请将以下内容添加到根包的composer.json
{ "scripts": { "post-autoload-dump": [ "Pico\\Composer\\Installer\\PluginInstaller::postAutoloadDump" ] } }
用法
您的插件和主题本身不需要要求picocms/composer-installer
。它们只需要在composer.json
中指定类型。
{ "type": "pico-plugin" }
或
{ "type": "pico-theme" }
更多关于主题的信息
Pico主题安装程序将自动通过将包名转换为StudlyCase并移除(如果存在)-theme
后缀来确定安装目录。这一步骤的结果被称为“安装名称”。例如,包pico-nyan-cat-theme
被安装到themes/PicoNyanCat
目录。然后您可以通过将theme: PicoNyanCat
添加到Pico的config/config.yml
中,来使用此主题。
您可以通过在主题的composer.json
中设置installer-name
额外参数来覆盖此行为。例如,Pico官方默认主题(picocms/pico-theme
)在其composer.json
中包含以下行,指示安装程序将其安装到themes/default
目录。
{ "extra": { "installer-name": "default" } }
更多关于插件的信息
Pico插件安装程序将自动通过将包名转换为StudlyCase并移除(如果存在)-plugin
后缀来确定安装目录。这一步骤的结果被称为“安装名称”。安装名称稍后将被Pico用于加载插件的PHP类。例如,包pico-nyan-cat-plugin
被安装到plugins/PicoNyanCat
目录,Pico稍后使用PicoNyanCat
PHP类来加载插件。
为确保安装程序正常工作,请确保您的插件composer.json
中有一个适当的autoload部分,以便Pico稍后可以找到PicoNyanCat
PHP类。
{ "autoload": { "classmap": [ "PicoNyanCat.php" ] } }
您可以通过在插件的composer.json
中设置installer-name
额外参数来更改安装目录。通过覆盖安装名称,您也更改了Pico用于加载插件的PHP类。例如,如果您的包名为my-vendor/my-pico-plugin
,安装程序会将其安装到plugins/MyPico
目录。如果您不想移除-plugin
后缀,请将以下行添加到您的插件composer.json
中。
{ "extra": { "installer-name": "MyPicoPlugin" } }
安装程序现在会将其插件安装到plugins/MyPicoPlugin
目录,Pico使用MyPicoPlugin
PHP类来加载插件。
高级插件设置
如果您不是绝对的Pico专家,请不要再往下看了!即使听起来很方便,以下内容仅适用于非常高级的设置。
Pico插件安装程序由两部分组成:首先,它确定安装名称以决定插件安装到哪个目录。其次,它创建一个包含所有已安装插件及其相应PHP类的vendor/pico-plugin.php
文件。如果此文件存在,Pico 2.0+将使用它来加载这些插件。Pico自然会确保这些插件不会作为本地插件再次加载。但是,只有当使用post-autoload-dump
事件时(通常是这种情况),才会创建vendor/pico-plugin.php
文件。
如果没有使用post-autoload-dump
事件,安装程序不会创建vendor/pico-plugin.php
文件,Pico将基于文件系统的方式加载插件:它会查看目录名称,尝试包含此目录中相同名称的.php
文件,并使用相同的名称作为PHP类。换句话说:如果存在plugins/PicoNyanCat
目录,Pico将包含plugins/PicoNyanCat/PicoNyanCat.php
文件,并使用PicoNyanCat
PHP类来加载插件。如果不起作用,Pico将无法恢复地退出。
如您所注意到的,这可能会出错。所以,请小心!
如果您想覆盖Pico用于加载插件的PHP类,或者如果您想同时加载多个插件,请使用插件composer.json
中的pico-plugin
额外参数。插件集合的composer.json
可能看起来如下。
{ "extra": { "installer-name": "MyPluginCollection", "pico-plugin": [ "MyVendor\\MyPluginCollection\\MyFirstPlugin", "MyVendor\\MyPluginCollection\\MySecondPlugin" ] } }
请注意,如果您想与他人共享插件,绝对不要使用此功能。
使用根包的composer.json
。
上面解释的所有对 composer.json
的调整也可以用于根包的 composer.json
。根包的 composer.json
甚至优先于插件或主题的 composer.json
,这允许您针对您的网站特定地覆盖安装程序的行为!
例如,如果您想将 Pico 主题 some-vendor/nyan-cat-theme
安装到 themes/TacNayn
目录而不是 themes/NyanCat
,请将以下内容添加到根包的 composer.json
{ "extra": { "installer-name": { "some-vendor/nyan-cat-theme": "TacNayn" } } }
除了使用确切的包名外,您还可以使用 vendor:
(例如 vendor:some-vendor
)和 name:
(例如 name:nyan-cat-theme
)前缀来匹配插件或主题包的名称。
自然,这不仅仅限于主题,对插件也有效。然而,请务必小心,通过更改插件的安装程序名称,您(通常)也会更改 Pico 用来加载插件的 PHP 类。 这可能会破坏您的安装! 请参阅上面的“高级插件设置”部分获取更多信息。简单来说,不要为插件使用此功能!
有时您的主题目录不叫 themes/
,而是叫其他名字,比如 public/
。您可以使用 pico-theme-dir
(分别)来更改 themes/
和 plugins/
目录的路径。只需将以下内容添加到您的根包的 composer.json
{ "extra": { "pico-theme-dir": "public/", "pico-plugin-dir": "/some/absolute/path/" } }
那么不使用 Composer 的网站怎么办呢?
不用担心,Pico 既不需要您使用 Composer,也不需要 picocms/composer-installer
。
如果您的插件由 PicoNyanCat
PHP 类组成,请创建一个 PicoNyanCat.php
文件,并将其类定义写入该文件。如果您想使用该插件,只需将 PicoNyanCat.php
移动到您的 plugins/
目录。如果您的插件由多个文件组成(推荐,如 README.md
或 LICENSE
文件),请创建一个 plugins/PicoNyanCat/
文件夹,并将 PicoNyanCat.php
移动到该文件夹(这样您就得到 plugins/PicoNyanCat/PicoNyanCat.php
)。
如果您想分享您的插件,只需分享 plugins/PicoNyanCat/
文件夹,并指导您的用户将其复制到他们的 plugins/
目录。就这样!
有人可能会合理地问,为什么他最初应该使用 Composer 和 picocms/composer-installer
。答案很简单:因为 Composer 使用户使用起来更加方便——特别是当有超过两个或三个插件时!请参阅 Pico 的官方 Composer 启动项目(picocms/pico-composer
)以获取更完整的解释。