Magento의 bin/magento
실행 파일은 Symfony Console 구성 요소 일뿐입니다. 즉, 단일 명령에 대한 개별 파일을 찾을 수 있습니다. setup : di : compile의 경우 이름이 항상 동일하므로 DiCompileCommand.php ( setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
)를 찾을 수 있습니다 .
항상 exeucte()
메서드를 실행하여 살펴보아야합니다. 이 함수에서 $operations
var가 설정되어 getOperationsConfiguration()
메소드에 의해 채워지는 것을 볼 수 있습니다. 이 메소드는 기본적으로 DiCompileCommand에 컴파일 대상을 알려줍니다.
내가 시도한 첫 번째는 응용 프로그램 코드 생성기 부분 만 반환하는 것입니다.
private function getOperationsConfiguration(
array $compiledPathsList
) {
$excludePatterns = [];
foreach ($this->excludedPathsList as $excludedPaths) {
$excludePatterns = array_merge($excludedPaths, $excludePatterns);
}
return [
OperationFactory::APPLICATION_CODE_GENERATOR => [
'paths' => [
$compiledPathsList['application'],
$compiledPathsList['library'],
$compiledPathsList['generated_helpers'],
],
'filePatterns' => ['php' => '/\.php$/'],
'excludePatterns' => $excludePatterns,
]
];
}
이것은 꽤 잘 진행되었으며 컴파일 시간은 크게 줄었습니다.
Compilation was started.
Application code generator... 1/1 [============================] 100% 45 secs 308.8 MiB
Generated code and dependency injection configuration successfully.
반대로;
Compilation was started.
Interception cache generation... 7/7 [============================] 100% 3 mins 377.0 MiBB8 MiB
Generated code and dependency injection configuration successfully.
물론, 우리는 많은 것들을 잘라 냈기 때문에 이것이 예상되었습니다. 하지만 당신은 지정하지 않은 어떤 당신이 생성 한 할 파일. 예를 들어, 차단 클래스는 여러 모듈에 종속 될 수 있으므로 하나의 모듈에 대해서만이 기능을 실행하면 기능 출력이 제한적이므로 모든 파일을 모듈별로 생성 할 수있는 것은 아닙니다.
담당 발전기를 여기서 찾을 수 있습니다.
setup / src / Magento / Setup / Module / Di / App / Task / Operation /
각 클래스에는 foreach가 있으며 특정 모듈 / 경로를 계속 건너 뛰고 if / else를 추가 할 수 있습니다. 명령에 인수를 공급하는 방법에 대한 Symfony 콘솔 구성 요소 입력 인수 문서 를 확인하는 것이 유용 할 수 있습니다 .