amcgowanca/composer-hydration

提供Composer脚本,通过占位符替换实现项目骨架的活化。

2.0.0 2021-06-26 13:36 UTC

This package is auto-updated.

Last update: 2024-09-26 20:44:03 UTC


README

Packagist version Packagist Downloads Build Status

composer-hydration

简介

composer-hydration是一个简单的包,提供用于作为占位符替换的Composer脚本,主要用于“骨架”项目。

示例

composer run-script hydrate -- --replace={FRUIT}:"apple",{INGREDIENT}:"cinnamon"

脚本将在文件内容文件名文件夹中搜索占位符。

之前

$ /path/composer/project/{FRUIT}.txt
"I love {FRUIT} with {INGREDIENT}, is a good combination!"

之后

$ /path/composer/project/apple.txt
"I love apple with cinnamon, is a good combination!"

安装

安装Composer

由于composer-hydration是一个Composer脚本,您首先需要安装composer

注意:以下说明适用于全局composer安装。您可能需要根据您的设置将composer替换为php composer.phar(或类似)。

添加包依赖

composer-hydration添加为您的项目的包依赖,更新您的composer.json

    "require": {
        ...
        "jkribeiro/composer-hydration": "~1"
    }

定义Composer脚本

定义Composer脚本,将以下条目添加到您的composer.json

    "scripts": {
        "hydrate": "Jkribeiro\\Composer\\ComposerHydration::meatOnBones"
    }

安装项目

composer install

使用方法

您可以以多种方式执行此脚本

手动执行命令

在安装了包之后,您可以手动运行命令以将您的值放置其中。

composer run-script hydrate -- --replace={SEARCH}:{REPLACE},..."

在Composer事件期间进行活化

Composer在其执行过程中触发一些事件,这有助于确定在哪个步骤/事件上执行活化过程。

以下示例中,活化过程将在项目安装之后发生

    "scripts": {
        "hydrate": "Jkribeiro\\Composer\\ComposerHydration::meatOnBones",
        "post-install-cmd": "@composer run-script hydrate -- --replace={{PROJECT_NAMESPACE}}:{%BASENAME%}"
    }

变量作为替换值

有时我们需要在composer.json中使用动态替换值,而不仅仅是硬编码的值,如{FRUIT}:banana,对于这些情况,有两种可能性

环境变量

composer.json允许使用环境变量作为替换占位符值,如{{PROJECT_NAMESPACE}}:$PROJECT_NAME",其中$PROJECT_NAME是变量名。您必须在执行Composer命令之前定义这些变量。

示例
composer.json

    ...
    "scripts": {
        "hydrate": "Jkribeiro\\Composer\\ComposerHydration::meatOnBones",
        "post-install-cmd": "@composer run-script hydrate -- --replace={{PROJECT_NAMESPACE}}:$PROJECT_NAME"
    }

执行

$ export PROJECT_NAME="My Project"
$ composer install

“魔法常量”

使用与PHP魔法常量相同的思想,composer-hydration也提供了一些魔法常量。

  • {%BASENAME%}:返回脚本执行的基文件夹名称,通常是项目名称。

  • {%UCFIRST_BASENAME%}:返回首字母大写的基文件夹名称。

  • {%UPPER_CAMEL_CASE_BASENAME%}{%LOWER_CAMEL_CASE_BASENAME%}:使用大/小驼峰格式返回基文件夹名称。仅允许文件夹分隔符 '-' 和 '_'。

    示例

    $ ~/Projects/myproject: composer run-script hydrate -- --replace={{PROJECT_NAMESPACE}}:{%BASENAME%}"
    

    带有{{PROJECT_NAMESPACE}}的占位符将被替换为myproject