独立于平台的composer post-install-cmd脚本

时间:2018-05-25 20:41:16

标签: composer-php

让我们说我的项目有以下结构

project\
    templates\
    web\assets\
composer.json

默认情况下运行composer update符号链接到我的项目是在vendor/目录中创建的。我想创建一个自定义的post-install-cmd脚本,该脚本将在不同位置创建符号链接到templates\web\assets\文件夹。

由于我的团队正在开发Windows / Mac / Linux,我计划运行一个简单的php命令来实现这一目标。我似乎无法弄清楚从哪里开始...

问题是,我无法弄清楚启动php脚本时我当前的位置在哪里?我尝试过创建一个空文件来查看它创建的位置,但它甚至都没有创建它。

这是我希望工作的原因

"scripts": {
    "post-install-cmd": [
        "php -r \"symlink('/vendor/project/templates', '/templates/project');\"",
        "php -r \"symlink('/vendor/project/web/assets', '/web/project/assets');\""
    ]
}

1 个答案:

答案 0 :(得分:0)

你应该从路径中删除前导斜杠 - 至少在unix上它会被解释为绝对路径,绝对不会指向你的项目。

"scripts": {
    "post-install-cmd": [
        "php -r \"symlink('vendor/project/templates', 'templates/project');\"",
        "php -r \"symlink('vendor/project/web/assets', 'web/project/assets');\""
    ]
}

如果你想要一个防弹解决方案,你应该创建PHP助手类并使用__DIR__ lub composer API来定义正确的路径。请参阅examples in documentation