silverstripe/recipe-plugin

安装 SilverStripe recipes 的辅助插件

安装次数: 1,763,295

依赖者: 79

建议者: 0

安全: 0

星标: 11

关注者: 9

分支: 9

开放问题: 5

类型:composer-plugin

2.0.1 2024-06-17 00:44 UTC

This package is auto-updated.

Last update: 2024-09-07 05:04:24 UTC


README

CI Silverstripe supported module

介绍

此插件增强 composer 功能,允许安装 "silverstripe-recipe" 包。这些 recipes 允许以下功能

  • 提供项目资源文件的能力。这些文件在安装时复制到相应的项目根位置,并且可以安全地由开发者修改。在随后的 recipe 更新中,composer 会通知用户项目文件是否已更新,并确保新文件在 recipe 中引入时被复制。
  • Recipes 是可组合的,因此需要多个 recipes 的资源或依赖项可以相互包含,而不是重复内容。
  • Recipes 也可以用作基础 composer 项目。
  • 一个 require-recipe 命令,可以将 recipe 内联到根 composer.json 中,允许开发者自定义 recipe 依赖项,而不必强制包含所有要求。
  • 一个 update-recipe 命令,用于升级 recipe 到新版本。

安装

composer require silverstripe/recipe-plugin

示例输出

example-output

创建新项目

Recipes 可以引入任何现有项目(即使不是基于 silverstripe 的基础项目创建的)

composer init
composer require silverstripe/recipe-cms

或者,您可以根据现有的 recipe 创建一个新项目

composer create-project silverstripe/recipe-cms ./myssproject

内联 recipes

您可以内联之前安装的 recipe,或者您希望在主项目中包含依赖项的新 recipe。通过内联 recipe,您将促进其要求,以及其项目文件,提升到主项目中,并从依赖项中删除 recipe 本身。

这可以通过 update-recipe 完成,该命令将更新 recipe,或者通过 require-recipe 安装新 recipe。

注意,如果您要运行此命令,您必须首先通过正常的 composer 命令安装 recipe,或者安装 recipe 插件

composer init
composer require silverstripe/recipe-plugin
composer require-recipe silverstripe/recipe-cms

或者

composer init
composer require silverstripe/recipe-cms
composer update-recipe silverstripe/recipe-cms

删除 recipe 依赖项或文件

任何通过 recipe 安装的项目文件,或者通过内联 recipe 安装的任何模块都可以轻松删除。随后的 recipe 更新不会重新安装任何这些文件或依赖项。

为了确保这一点,所有内联模块和所有已安装文件的记录都存储在 composer.json 中,如下所示。

{
    "extra": {
        "project-files-installed": [
            "mysite/code/Page.php",
            "mysite/code/PageController.php"
        ],
        "project-dependencies-installed": {
            "silverstripe/admin": "2.0.x-dev",
            "silverstripe/asset-admin": "2.0.x-dev",
            "silverstripe/campaign-admin": "2.0.x-dev"
        }
    }
}

要删除文件,只需从您的项目安装文件夹中删除它,但不要修改 project-files-installed(因为这是 composer 知道不重新安装的方式)。

同样,要删除模块,使用 composer remove <module>,它将被删除。如上所述,不要修改 project-dependencies-instaleld,否则该模块将在随后的 composer update-recipe 中重新安装。

撤销删除的项目文件/依赖项

如果您已删除模块或文件并希望重新安装它,您应从 'project-files-installed' 或 'project-dependencies-installed' 中删除相应的条目,然后再次运行 composer update-recipe <recipe>

文件或模块将被重新安装。

删除 recipes

由于 recipe 的安装将所有依赖项内联并传递给根项目,因此没有自动删除过程。要删除 recipe,您应手动删除通过 composer remove <module> 不再需要的任何模块。

recipe 的 provide 引用也可以安全删除,尽管它除了禁用对 update-recipe 的未来调用外,没有实际效果。

不内联安装或升级 recipes

如果需要,可以省略菜谱的可选内联行为。只需使用composer命令requireupdate分别替代require-recipeupdate-recipe。这将不会禁用项目文件功能,但不会直接内联菜谱,从而保持根composer.json文件不会过于杂乱。

如果您已经内联了一个菜谱,则必须手动移除任何不想要的内联需求,随后需要使用require包含该菜谱。

请注意,使用此方法时,无需在根项目中包含silverstripe/recipe-plugin即可使其生效。

菜谱composer.json模式

菜谱类型应遵循以下规则

  • 除了项目文件外,没有强制资源。
  • 菜谱不应依赖于autoload,因为这些在内联时会被丢弃。同样,不应使用任何*-dev或其他仅限根项目的选项,因为这些在根项目外会被忽略。唯一例外是当这些值仅对基础项目有用时。
  • type必须是silverstripe-recipe
  • require必须将silverstripe/recipe-plugin作为依赖项。
  • extra.project-files必须声明为通配符模式列表,匹配菜谱根目录中的文件,这些文件应复制到根项目中。这些资源的相对路径是等效的。
  • 必须声明extra.public-files,对于任何应复制到public网络文件夹的文件。如果项目没有公共文件夹,这些文件将复制到根目录。请注意,所有公共文件都必须提交到菜谱的public文件夹。

一个示例菜谱

{
    "name": "silverstripe/example-recipe",
    "description": "Example silverstripe recipe",
    "type": "silverstripe-recipe",
    "require": {
        "silverstripe/recipe-plugin": "^1.0",
        "silverstripe/recipe-cms": "^5.0",
        "silverstripe/blog": "^4.0",
        "silverstripe/lumberjack": "^3.0",
    },
    "extra": {
        "project-files": [
            "mysite/_config/*.yml",
            "mysite/code/MyBlogPage.php"
            "client/src/*"
        ],
        "public-files": [
            "client/dist/*"
        ]
    },
    "prefer-stable": true,
    "minimum-stability": "dev"
}

这个菜谱中的文件将按照以下结构组织

client/
  src/
    blog.scss
mysite/
 _config/
    settings.yml
  code/
    MyBlogPage.php
public/
  client/
    dist/
      blog.css
composer.json