nystudio107/twig-bundle-installer

通过Composer安装、更新和管理Twig模板包

资助包维护!
khalwat

安装: 386

依赖: 1

建议者: 0

安全: 0

星标: 35

关注者: 4

分支: 2

开放问题: 0

类型:composer-plugin

1.1.2 2024-09-07 18:32 UTC

This package is auto-updated.

Last update: 2024-09-07 18:32:32 UTC


README

Scrutinizer Code Quality Build Status Code Intelligence Status

Composer的Twig Bundle Installer插件

一个Composer插件,用于在您的templates/vendor/目录中安装和管理Twig Bundles

Screenshot

概述

Twig Bundle Installer是一个Composer安装程序,它会在您的templates/目录中安装和管理Twig Bundles。它引入了Twig 的概念,并将它们安装到templates/vendor/中,类似于您通常在vendor中安装PHP包的方式。(而且它不会改变任何东西;您的PHP包仍然会保留在vendor中。)

它实现了一个新的Composer包类型twig-bundle,当发布Twig包时应使用该类型。Composer负责一切,Twig Bundle Installer与任何特定的CMS或系统无关。任何使用Twig的东西都可能觉得它很有用。

这允许您以管理的方式在多个项目中安装和更新Twig模板。

为什么这么做呢?

  • 停止在项目之间复制有用的Twig片段;轻松包含它们,并保持它们全部更新。
  • 与您想要的任何项目的其他开发人员和团队共享有用的Twig组件。
  • 在您使用Twig的任何地方重用这些相同的片段;Craft CMS、Drupal、Grav、Symfony...甚至Laravel、Statamic,等等。
  • 当您的基组件都集中在一个地方时,提高您的文档。
  • 以更方便、灵活和可版本化的方式分发Craft插件的示例模板。
  • 像使用PHP包一样轻松地利用模板依赖项。

为什么选择Twig Bundle Installer?

我在开发可重用的Twig组件时,最初想到了Twig Bundle Installer中实现的想法。

后来,当我在一个有效的基Twig模板设置文章中讨论基础Twig模板层时,这个想法又出现了。

然后,当与一位同事讨论他们如何通过单独的插件管理大型Craft CMS安装中的多个品牌属性时,这个想法又一次出现了。每个品牌网站都有自己的自定义插件,这主要是该网站所需模板的包装器。

所以如果同样的事情发生3次或更多次,我认为尝试它可能是值得的…

使用Twig Bundle Installer

消费Twig Bundles

将Twig Bundles添加到您的项目中

要在自己的项目中使用Twig Bundles,首先需要将Twig Bundle Installer添加到项目的composer.json

{
  "require": {
    "nystudio107/twig-bundle-installer": "^1.0.0"
  }
}

因为Twig Bundle Installer是一个Composer插件,您还需要在composer.json文件中通过config:allow-plugins告诉Composer可以使用此插件

{
  "config": {
    "allow-plugins": {
      "nystudio107/twig-bundle-installer": true
    }
  }
}

然后,您可以像添加任何Composer包一样添加您想要使用的Twig Bundle的供应商/包名称

{
  "require": {
    "nystudio107/twig-bundle-installer": "^1.0.0",
    "nystudio107/test-twig-bundle": "^1.0.0"
  }
}

然后只需执行

composer install

Twig Bundle Installer所做的就是对于类型为twig-bundle的Composer包,它不会将它们放入vendor/目录,而是将它们放入templates/vendor/目录。

在上面的例子中,您最终会得到类似以下的内容

❯ tree -L 4 templates/vendor
templates/vendor
└── nystudio107
    └── test-twig-bundle
        ├── CHANGELOG.md
        ├── composer.json
        ├── LICENSE.md
        ├── README.md
        └── templates
            ├── fizz-buzz.twig
            ├── elementary-my-dear-watson.twig
            └── five-minute-read.twig

3 directories, 8 files

这意味着您可以在多个项目中安装和更新这些Twig Bundles。它们可以是您创建的,也可以是其他人创建的。

它的工作方式与任何Composer包一样,因为Twig Bundle Installer只是Composer的一个层面,它将类型为twig-bundle的包路由到不同的目录。

您熟悉的命令,如composer requirecomposer update等,都会按预期工作。

包含来自Twig Bundle的模板的示例

{% include 'vendor/nystudio107/test-twig-bundle/templates/fizz-buzz.twig' %}

Twig Bundle注意事项

由于Twig Bundle Installer正在查找项目根目录中名为templates/的目录,该目录指向您的Twig模板目录

  • 您应该将templates/vendor/目录视为只读,就像您对vendor/目录所做的那样。
  • 如果您在其他地方存储模板,您可以从templates/创建一个符号链接或别名到您存储模板的位置,或者您可以通过设置环境变量TEMPLATES_VENDOR_DIR(在环境本身中,或者在您使用Dotenv时在项目根目录的.env文件中)。
  • 如果您将vendor/目录排除在Git仓库之外,您可能还想将templates/vendor/添加到您的.gitignore中。Twig Bundle Installer会自动为您在templates/vendor/目录中放置.gitignore文件。

.gitignore文件示例

/vendor
/templates/vendor

本地仓库

如果您想在修改它们的同时使用本地Twig Bundles,您可以通过Composer Repositories设置来实现。

{
  "require": {
    "nystudio107/bundle-twig-installer": "^1.0.0",
    "nystudio107/twig-test-bundle": "^1.0.0"
  },
  "repositories": [
    {
      "type": "path",
      "url": "../../twig/*",
      "options": {
        "symlink": true
      }
    }
  ]
}

其中url设置是指向您的源Twig Bundles所在路径的位置。

创建Twig Bundles

要创建一个Twig Bundle,创建一个包含Composer.json文件的目录,其外观如下

{
  "name": "nystudio107/test-twig-bundle",
  "description": "Test bundle of Twig templates for Bundle Installer",
  "version": "1.0.0",
  "keywords": [
    "twig",
    "twig-bundle",
    "composer",
    "installer",
    "bundle"
  ],
  "type": "twig-bundle",
  "license": "MIT",
  "minimum-stability": "stable"
}

...但是显然将name更改为您的vendor/bundle名称,并填写您自己的描述等。关键是您必须将type设置为twig-bundle

  "type": "twig-bundle",

然后,您希望将其发布到GitHub或其他Git仓库,并在Packagist.org上发布,以便其他人可以通过Composer安装它。

如果您以前从未在Packagist上发布过包,只需遵循Packagist.org上的说明,或阅读Packagist和PHP生态系统文章。

您可以使用Test Twig Bundle作为参考的示例。

Twig Bundle Installer路线图

该项目目前可以正常使用,但它也处于萌芽阶段。我很想看看人们会找到什么用途,或者可能完全用不上。

一些想法

  • 捆绑包可以包含CSS和JavaScript,安装器为其他要消费的内容构建manifest.json
  • 特定框架的工具可以通过在前端自动发布捆绑包来补充Twig Bundle Installer。
  • 技术上,这里描述的技术也可以很好地用于AntlersBlade以及其他模板系统。

nystudio107提供