magento 2-어떤 경우에이 명령을 실행해야합니까? magento setup : di : compile?


12

어떤 경우에이 명령을 실행해야 magento setup:di:compile합니까?


새 모듈을 설치하고 일부 디렉토리를 지우고 싶은 경우
Jaleel

그리고 다른 것?
MrTo-Kane

또한 해당 모드에서는 프로덕션 컨텐츠로 전환 할 때 정적 컨텐츠가 생성되지 않습니다. 모두 제공됩니다pub/static
Steve Johnson

답변:


8
  • 배포 중 (즉, 프로덕션 모드에서 시스템을 변경 한 경우)

    프로덕션 모드 (버전 2.0.5 이하)에서는 "멀티 테넌트"컴파일을 사용해야합니다. 2.0.6 이상에서 수정되었습니다.

    bin/magento setup:di:compile-multi-tenant

    참조 : http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html

  • 개발 모드에서 컴파일을 사용하여 사이트 속도를 높일 수도 있지만, 종속성 (생성자 매개 변수)이있는 새 클래스bin/magento setup:di:compile추가 하거나 기존 클래스의 종속성을 변경할 때마다 실행해야하므로 개발 속도가 느려집니다 .

    이것은 선택 사항이며 아마도 좋은 생각이 아닙니다. 개발 환경에서 컴파일을 이미 실행 한 경우 파일을 삭제하여 var/di비활성화하십시오.


1
setup : di : compile-multi-tenant가 제거되었습니다
Antonino Bonumore

var / di 폴더 트릭 삭제가 작동하는지 여부를 확인할 수 있습니까? 그것은 나를 위해 보이지 않는 것
Wildcard27

@ Wildcard27 또한 디렉토리를 삭제하면 var/generation어떻게됩니까?
Fabian Schmengler

@FabianSchmengler 방금 Action테스트를 만들었습니다 . -페이지를로드했습니다. 오류가 발생했습니다. -삭제 digeneration폴더 재로드, 작동합니다. -새로운 의존성 추가, 페이지 새로 고침, 오류. 그러나 di폴더가 생성 되지 않습니다 . generation다시 삭제 , 새로 고침, 작동 결론 : 종속성을 추가 한 후 생성 폴더를 삭제하면 실행할 필요가 없습니다 setup:di:compile. 다른 사람이 이것을 확인할 수 있다면 정말 좋을 것입니다.
와일드 카드

1

다른 답변에 대한 내 의견에 따르면 :

페이지를 다시로드하기 전에 및 폴더 setup:di:compile 삭제하여 depency를 추가 할 때마다 명령을 실행하지 않아도됩니다 .var/divar/generation

내 자신의 테스트에서 Magento는 var/generation폴더 를 다시 만들지 만 다시 실행될 var/di때까지 폴더는 만들지 않습니다 setup:di:compile. 즉, var/generation삭제할 폴더 만 있어야합니다 .

충분히 재미있게, 이것은 또한 작동 pub/static/*하고 setup:static-content:deploy. 이는 Magento가 CLI가 아닌 페이지 다시로드로 정적 컨텐츠를 빌드하는 경우 필요한 파일에 대한 심볼릭 링크를 작성하는 것으로 보이기 때문입니다.

Docker for Mac을 사용하는 동안 사무실 사람들은 위의 명령을 실행하는 데 문제가있었습니다. 파일 처리 속도가 너무 느 렸습니다. 위의 단계를 사용하면 개발이 훨씬 빨라집니다.

프로덕션 또는 기본 모드에서는 작동하지 않습니다. 이것은 개발만을위한 것입니다. Fabian Schmengler가 언급했듯이 초기 페이지 재로드는 평소보다 느리지 만 실행 setup:static-content:deploy또는`setup : di : compile ' 만큼 느려서는 안됩니다 .

참고로 버전 2.1.5를 실행 중 입니다.


0

Alan Storm의 블로그 에서 가져 왔습니다 .

의존성 주입 컴파일

시작하려면이 명령으로 해결하려는 문제를 설명해야합니다. Magento 2 시스템을 프로덕션으로 배송 할 때 다음 명령을 실행해야합니다

php bin/magento setup:di:compile

이 명령은 시스템의 코드를 스캔하여 개발자 모드에서 실행할 때 Magento가 동적으로로드하는 많은 것들 (주로 객체 관리자 시스템 및 종속성 주입과 관련됨)을 미리 생성합니다. 이것은 성능과 보안의 문제이며 전체에 대한 논의는이 기사의 범위를 벗어납니다.


1
"이것은 성능과 보안 모두에 관한 것이므로 전체에 대해 논의하는 것은이 기사의 범위를 벗어납니다." 이것은 그것을 주었다. Alan Storm의 명백한 사본 : alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug
Fabian Schmengler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.