vilifa / composer-substitution-plugin
Composer 插件,通过动态值替换脚本部分中的占位符
1.4.0
2022-01-04 10:53 UTC
Requires (Dev)
- composer/composer: >=1.1
- phpunit/phpunit: 4.8.36 || 5.7.27 || 6.5.14 || ^8.5.21 || ^9.5.10
README
Composer 替换插件通过动态值替换脚本部分中的占位符。
它还允许在命令执行期间缓存这些值,并添加了使用您选择的函数进行转义的选项。
安装
composer require villfa/composer-substitution-plugin
要求
- PHP >= 5.3.2
- Composer >= 1.0.0
使用方法
您需要在 composer.json
的 extra 部分中配置此插件。
以下是一个示例
"extra": { "substitution": { "enable": true, "mapping": { "{MY_NAME}": { "type": "literal", "value": "John Doe", "escape": "addslashes" }, "{PHP_VERSION}": { "type": "callback", "value": "phpversion" }, "{DB_STATUS}": { "type": "include", "value": "./scripts/db.php", "cached": true }, "{HOME}": { "type": "env", "value": "HOME" }, "{COMPOSER_VERSION}": { "type": "constant", "value": "Composer\\Composer::VERSION" }, "{NPROC}": { "type": "process", "value": "nproc" } } } }
然后您可以在 scripts 部分添加配置的占位符
"scripts": { "welcome": "echo 'Hi {MY_NAME}, the database is {DB_STATUS}.'" }
现在如果您运行此命令
$ composer run-script welcome Hi John Doe, the database is OK.
配置
示例
{ "config": { "allow-plugins": { "villfa/composer-substitution-plugin": true } } }
您只需执行此命令
composer config allow-plugins.villfa/composer-substitution-plugin true
有关更多详细信息,请参阅 https://getcomposer.org.cn/doc/06-config.md#allow-plugins
替换类型
对于每种替换类型,替换占位符的值来自不同的来源。
literal
:直接使用配置中的值。callback
:值是回调函数返回的字符串。include
:值是 PHP 文件返回的字符串。env
:值是 ENV 变量。constant
:值来自常量或类常量。process
:值是处理命令的输出。
真实示例
PHPUnit 额外约束
此库定义了一个 Composer 脚本,该脚本使用 PHP_CodeSniffer 以这种方式
"scripts": { "phpcs": "phpcs --standard=PSR12 --parallel=$(nproc) src/ tests/",
遗憾的是,由于使用了 nproc
,它不是跨平台的。
这可以通过替换插件与 Linfo 结合解决(也请参阅小脚本 nproc.php)。以下是它的配置
"extra": { "substitution": { "enable": true, "mapping": { "$(nproc)": { "cached": true, "type": "include", "value": "./scripts/nproc.php" } } } }
因此现在它也适用于 Windows,甚至无需触摸 scripts 部分。