jkribeiro/composer-hydration

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

1.1.0 2017-08-25 19:09 UTC

This package is auto-updated.

Last update: 2024-09-06 09:27:54 UTC


README

Packagist version Packagist Downloads Build Status

composer-hydration

简介

composer-hydration是一个简单的包,提供了一个用于作为占位符替换使用的Composer脚本,主要用于'skeletons'项目。

示例

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脚本,您需要先安装composer

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

添加包依赖

添加为项目的包依赖,更新您的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