vilifa/composer-substitution-plugin

Composer 插件,通过动态值替换脚本部分中的占位符

1.4.0 2022-01-04 10:53 UTC

This package is auto-updated.

Last update: 2024-08-30 01:17:45 UTC


README

Composer 替换插件通过动态值替换脚本部分中的占位符。

它还允许在命令执行期间缓存这些值,并添加了使用您选择的函数进行转义的选项。

Build Status AppVeyor Build Status Latest Stable Version Minimum PHP Version License

安装

composer require villfa/composer-substitution-plugin

要求

  • PHP >= 5.3.2
  • Composer >= 1.0.0

使用方法

您需要在 composer.jsonextra 部分中配置此插件。

以下是一个示例

"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 部分。