我的目标是在创建项目后更改当前用户目录。
我正在运行composer create-project vendor/repo some-directory
,我在composer.json文件中有以下部分。
{
"scripts": {
"post-create-project-cmd": [
"cd /some/destination"
]
}
}
所以我需要使用命令行参数中指定的some-directory动态替换/ some / destination。
有可能吗?
答案 0 :(得分:2)
如docs中所述:
什么是剧本?
使用Composer的术语,脚本可以是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"
]
}
}
答案 1 :(得分:0)
运行composer create-project vendor/repo some-directory
时Composer的作用是(简化):
因此,如果您要显示 vendor / repo 中使用的 scripts 部分,则无需将当前目录更改为创建项目的目录,因为Composer已经这样做了。
如果需要从正在创建的项目的 scripts 部分中列出的Bash脚本中获取当前目录,只需检查变量$PWD
的内容,该变量等效于{ PHP中的{1}}。
作为Composer项目的示例,请参阅Composer项目ScriptHandler.php中使用的drupal-composer/drupal-project的内容。它在目录中创建一些文件,其文件名从getcwd()
返回。
getcwd()
实际上,它是在当前目录中找到的目录中创建目录,但是这并没有改变将创建项目的目录设置为Composer的当前目录。