jkribeiro / composer-hydration
提供Composer脚本来通过占位符替换实现项目骨架的活用。
Requires
- symfony/finder: 2.8
README
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
替换为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
。