假设我的项目具有以下结构
project
templates
webassets
composer.json
默认情况下,运行composer update
时,将在目录中创建指向我的项目的符号链接vendor/
。我想创建一个自定义的安装后cmd脚本,该脚本将创建指向templates
的符号链接,并在不同位置webassets
文件夹。
由于我的团队正在开发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');""
]
}
您可能应该从路径中删除前导斜杠 - 至少在 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来定义正确的路径。请参阅文档中的示例。