spa*_*jak 8 symfony composer-php
我刚刚安装了 Symfony 4 项目,并在composer.json以下位置找到了这一部分:
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
],
...
Run Code Online (Sandbox Code Playgroud)
我发现auto-scriptsComposer 以某种方式处理了该部分:key 是一个命令bin/console,value 是一个命令“类型”(在这种情况下它是 Symfony 的)。由于它没有在 Composer 网站上记录,我认为它不是法律定义,但它有效,我的问题是 Composer 如何知道如何执行这些命令?Composer 怎么知道是什么symfony-cmd?
小智 7
正如塞拉德所说。auto-script由 Symfony/Flex 解析,并且 command:executable 对的“右侧”由这个 switch-case 处理。
switch ($type) {
case 'symfony-cmd':
return $this->expandSymfonyCmd($cmd);
case 'php-script':
return $this->expandPhpScript($cmd);
case 'script':
return $cmd;
Run Code Online (Sandbox Code Playgroud)
因此,Composer 文档对此一言不发,因为它是特定于 Symfony 的。
我个人不喜欢在 composer.json 根级别将标准 Composer 部分与自定义部分混合。它只是让我感到困惑并将我吸引到无声的 Composer 文档中。此外,命名本身auto-script应该更好。一些不那么神奇但更不言自明的东西,比如flex-script.
我猜它使用extra位于composer.json
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-var-dir": "var",
"symfony-bin-dir": "bin",
"symfony-tests-dir": "tests",
...
},
Run Code Online (Sandbox Code Playgroud)
几天前,当我将应用程序从 2.8 迁移到 3.4 时,我在这些定义方面遇到了一些麻烦。
我还必须清除作曲家的缓存。
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |