개발자 모드와 언제 어떤 컴파일 명령이 필요합니까?


24

누군가 Magento 2 개발자 모드에서 어떤 컴파일 명령을 실행할지 지시 할 수 있습니까? 아직 이해하고 있는지 잘 모르겠습니다.

devdoc에서 개발자 모드 는 다음과 같이 설명됩니다.

  • 정적 뷰 파일은 캐시되지 않습니다. 호출 될 때마다 Magento pub / static 디렉토리에 기록됩니다

이는 pub / static의 각 개별 파일이 요청 될 때 생성되며 호출 할 필요가 없다는 것을 의미합니까 setup:static-content:deploy? 이것은 나의 경험과 모순된다. 아니면 파일을 삭제해도 재생성됩니까? 또한 이미지, CSS 및 JS 파일은 다르게 취급되는 것 같습니다.

개발자 모드 문서 페이지에는 코드 컴파일에 대해서는 언급되어 있지 않지만 차이가 있다고 생각하므로 파일 setup:di:compile을 모두 변경 한 후에 실행할 필요는 없습니다 di.xml. 이것이 정확합니까? 그렇다면 개발자 모드에서 코드 생성은 어떻게 작동합니까?

다시 말해 , 캐시는 제외하고 어떤 변경 후에 어떤 명령을 실행해야합니까?

답변:


27

주의 : 개발자 모드에서 삭제하면 해당 폴더에서 마술을 만드는 파일을 pub/static제거하기 때문에 메커니즘이 중단됩니다 .htaccess.

pub/static/.htaccess파일을 개발자 모드로 유지하면 컴파일 명령을 실행할 필요가 없습니다. Magento는 파일을 요청하자마자 파일에 대한 심볼릭 링크를 만듭니다. 즉, 캐시를 비활성화 한 경우 정적 자산에 대한 변경 사항이 즉시 표시됩니다.

pub/static/frontend또는 pub/static/adminhtml대신 삭제할 수 있습니다 .

에서 기본 모드 자산이되어 실현pub/static그들이 첫 번째 요청에서 (복사 심볼릭 링크되지 않음) 생성을 의미 하위 폴더. 수정하면 캐시를 비워 업데이트해야합니다.

프로덕션 모드 에서는 bin/magento setup:static-content:deploy명령 을 실행할 때까지 자산이 구체화되지 않습니다 (요청시 404 HTTP 오류 발생) .

도움이 되길 바랍니다.


DI 컴파일은 어떻습니까?
Erfan

@ Erfan 더 정확하게 무엇을 의미합니까?
Alessandro Ronchi

2
이 질문은 또한 배포 모드가 DI 컴파일에 미치는 영향에 대해서도 질문합니다. 방금 빠른 테스트를했는데 개발자 모드 인 경우 변경 사항 di.xml을 표시 하기 위해 DI를 컴파일 할 필요가 없습니다 (페이지 적중 당 즉시 코드 생성이 수행됩니까?) 그것은 이미 좋은 대답에 좋은 추가가 될 것이라고 생각했습니다!
Erfan

당신은 맞습니다 @Erfan
Alessandro Ronchi

1+ 고마워 형제. 매력처럼 일했다. 개발자 모드에서도 변경 사항을 CSS에서 CSS로 변경하기 위해 명령 배포를 반복적으로 실행하는 경험이 매우 좋지 않았습니다. 다른 프로젝트에서 .htaccess를 복사하여 언급 된 위치에 붙여 넣었습니다. 칼라 아스!
Umar Yousaf

4

내 경험상 개발자 모드에서 코드 / 정적 파일 생성을위한 명령을 실행할 필요가 없습니다.

정적 파일이 생성되지 않은 경우 다른 문제가있을 수 있습니다.

첫눈에 두 가지 이유가 있습니다.

  • 개발자 모드가 올바르게 작동하지 않습니다. 어떤 이유로 활성화가 실패했을 수 있습니다
  • pub / static.php의 정적 파일 재 작성이 작동하지 않습니다.

1
술집 / 정적의 내 적은 파일이 다시 생성되지 않습니다. 이 문제가 발생합니까? 자동 재생성 방법
mrtuvn

정적 파일에 대한 요청은 먼저 pub / static.php로 다시 작성된 다음 pub / static이 없으면 pub / static에서 파일을 생성하므로 개발자 모드가 활성화되어 있고 다시 쓰기가 작동하는 것이 중요합니다.
David Verholen

4

이는 pub / static의 각 개별 파일이 요청 될 때 생성되며 호출 할 필요가 없다는 것을 의미합니까 setup:static-content:deploy? 이것은 나의 경험과 모순된다. 아니면 파일을 삭제해도 재생성됩니까?

예. 그러나 내 경험에 따르면 이것은 대부분 작동하지 않습니다. 버그 일 수 있습니다. 더 나은 솔루션은 pub/static이미 개발자 모드를 활성화 한 경우에도 정적 파일 (js, css, html 등)을 변경할 때마다 컨텐츠 를 삭제 하고 정적 컨텐츠를 다시 배치하는 것입니다. 이것에 대한 내 자신의 질문.


그것은 당신이 보는 방식에 달려 있습니다. 변경할 때마다 setup : static-content : deploy를 실행하려면 하나의 파일 만 업데이트 할 때 기본적으로 상점의 모든 단일 파일을 작성하는 프로젝트 원인을 완료하는 데 몇 년이 걸립니다. 그래서 내 솔루션은 pub / static 내의 파일을 덮어 쓰고 캐시를 지우고 변경 사항을 확인하는 것이 었습니다. 결과에 만족하면 테마 또는 사용자 정의 모듈 파일로 이동하여 기본 파일을 덮어 쓴 다음 setup : static-content : deploy를 실행하여 정적 파일을 업데이트합니다.
볼프강 레온

4

세 가지 다른 모드 (출처 : Magento U Fundamentals 과정)를 명확히하기 위해. 굵게 표시되어있는 질문과 관련된 특정 사항입니다.

개발자 모드

  • 정적 파일 구체화가 활성화되지 않았습니다.
  • 브라우저에 포착되지 않은 예외가 표시됨
  • 오류 처리기에서 예외가 발생하고 기록되지 않음
  • var/report자세한 시스템 로그인 .

사용자 정의 또는 확장을 개발하는 동안 개발자 모드를 사용해야합니다. 이 모드의 주요 이점은 오류 메시지가 표시된다는 것입니다. 성능에 영향을 미치므로 프로덕션 환경에서 사용해서는 안됩니다. 개발자 모드에서는 정적보기 파일이 요청 될 때마다 생성됩니다. pub/static디렉토리에 기록 되지만이 캐시는 사용되지 않습니다. 이는 성능에 큰 영향을 주지만 개발자가 파일을보기 위해 변경 한 내용은 즉시 볼 수 있습니다.

포착되지 않은 예외는 기록되지 않고 브라우저에 표시됩니다. 이벤트 구독자를 호출 할 수 없을 때마다 예외가 발생합니다.

var/report이 모드 에서는 시스템 로그인 이 매우 상세합니다.

생산 모드

  • 프로덕션 시스템의 배포 단계 최고의 성능
  • 예외는 사용자에게 표시되지 않으며 로그에만 기록됩니다.
  • 이 모드는 정적 파일 구체화를 비활성화합니다.
  • Magento docroot는 읽기 전용 권한을 가질 수 있습니다.

Magento가 프로덕션 서버에 배포되면 프로덕션 모드에서 Magento를 실행해야합니다.

생산 모드는 Magento 2에서 최고의 성능을 제공합니다.

이 모드의 가장 중요한 측면은 오류가 파일 시스템에 기록되고 사용자에게 표시되지 않는다는 것입니다. 이 모드에서는 정적보기 파일이 요청 될 때 즉시 작성되지 않습니다. 대신 pub/static명령 행 도구를 사용하여 디렉토리에 배치해야합니다 . 생성 된 페이지에는 배치 된 페이지 자원에 대한 직접 링크가 포함됩니다.

파일보기를 변경하려면 배치 도구를 다시 실행해야합니다.

보기 파일은 CLI 도구를 사용하여 배포되므로 웹 사용자는 쓰기 권한이 있어야합니다. Magento pub/static디렉토리는 읽기 전용 권한을 가질 수 있으며, 이는 공개적으로 액세스 가능한 서버에서보다 안전한 설정입니다.

기본 모드

  • 다른 모드가 지정되지 않은 경우 사용
  • 사용자로부터 예외를 숨기고 로그 파일에 씁니다.
  • 정적 파일 구체화가 활성화되었습니다.
  • 생산에 권장되지 않거나 최적화되지 않음 : 캐싱은 성능에 부정적인 영향을 미칩니다.

이름에서 알 수 있듯이 기본 모드는 다른 모드를 지정하지 않은 경우 Magento 소프트웨어가 작동하는 방식입니다.

이 모드에서는 오류가 파일에 기록되고 var/reports사용자에게 표시되지 않습니다. 정적 뷰 파일은 즉시 구체화 된 후 캐시됩니다.

개발자 모드와 달리,보기 파일 변경 사항은 생성 된 정적보기 파일이 지워질 때까지 표시되지 않습니다.

기본 모드는 프로덕션 환경에 최적화되어 있지 않습니다. 주로 정적 파일을 미리 생성하여 배포하지 않고 즉시 구체화하는 성능에 부정적인 영향을 미치기 때문입니다 .

즉, 정적 파일을 즉석 에서 생성하고 캐싱하면 정적 파일 작성 명령 줄 도구를 사용하여 생성하는 것보다 성능에 더 큰 영향을 미칩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.