如何获得自定义脚本的Composer命令参数



我的目标是创建项目后更改当前的用户目录。

我正在运行 composer create-project vendor/repo some-directory,并且我在composer.json文件中有以下部分。

{
    "scripts": {
        "post-create-project-cmd": [
            "cd /some/destination"
        ]
    }
}

因此,我需要动态替换/某些/目的地,用某个主导地位,在命令行参数中指定。

可能吗?

,如文档中所述:

什么是脚本?

用作曲家的话来说,脚本可以是PHP 回调(定义为静态方法(或任何命令行可执 命令。

因此,您可以在终端中使用mv- 类型man mv之类的命令以获取更多信息 - :

{
    "scripts": {
        "post-create-project-cmd": [
            "mv /some/destination /some-directory",
            "cd /some-directory"
        ]
    }
}

或通过创建可呼叫的方法来为您处理此操作。

{
    "scripts": {
        "post-create-project-cmd": [
            "SomeVendor\SomeObject::renameMyDirMethod"
        ]
    }
}

作曲家运行composer create-project vendor/repo some-directory是什么(简化(:

  • 创建 directory 目录(如果目录不是空的,则作曲家提高了异常 project indirectory some-directory/不是空的。((
  • 将当前目录更改为某个指导
  • 执行project composer.json文件的脚本部分中报告的脚本(在您的情况下是供应商/repo中使用的脚本。(

因此,如果您正在显示脚本供应商/repo 中使用的部分,请将当前目录更改为不需要创建项目的目录,由于作曲家已经做到了。
如果您需要从正在创建的项目的脚本部分中列出的bash脚本中获取当前目录,则只需检查变量 $PWD的内容,该内容相当于php中的 getcwd()。/p>

作为作曲家项目完成的示例,请参见Composer Project Drupal-Composer/Drupal-Project使用的Scripthandler.php的内容。它在目录中创建一些文件,其文件名是从getcwd()返回的。

$fs = new Filesystem();
$drupalFinder = new DrupalFinder();
$drupalFinder->locateRoot(getcwd());
$drupalRoot = $drupalFinder->getDrupalRoot();
$dirs = [
  'modules',
  'profiles',
  'themes',
];
// Required for unit testing
foreach ($dirs as $dir) {
  if (!$fs->exists($drupalRoot . '/'. $dir)) {
    $fs->mkdir($drupalRoot . '/'. $dir);
    $fs->touch($drupalRoot . '/'. $dir . '/.gitkeep');
  }
}

实际上,它正在创建当前目录内找到的目录内的目录,但这并没有改变创建项目的目录是从作曲家设置为当前目录的。

相关内容

  • 没有找到相关文章

最新更新