Symfony2에서의 차이 무엇 assetic:dump
과 assets:install
? 이러한 각 명령은 어떤 시나리오에서 어떤 순서로 사용해야합니까 (순서가 관련된 경우)?
답변:
실제로 최근에 쓴 당신은 다른 명령으로, 귀하가 흥미있을 이유 문맥 /의 일부를 원하는 경우 심포니 2를 기반으로 OroCRM에 대한 기사에서.
Symfony 애플리케이션에 프런트 엔드 파일 (javascript, css, 이미지 등)을 포함하기위한 두 가지 시스템이 있습니다. assets:install
명령은 먼저왔다. 이 명령은 응용 프로그램의 모든 Symfony 번들을 검색하여
Resources/public
폴더. 찾은 경우 assets:install
명령은 파일을에서 Resources/public
로 복사하거나 심볼릭 링크합니다 web/public/bundle/[bundle-name]
. 여기에서 twig assets
기능으로 생성 된 링크 가 이러한 파일을 찾습니다. 이
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>
이것이된다
<script src="/bundles/[bundle-name]/js/script.js" type="text/javascript"></script>
그게 assets
시스템이하는 전부 입니다. 번들과 함께 프런트 엔드 파일을 저장할 수 있습니다.
assetic
시스템은 다르다. 를 사용하면 이와 assetic
같은 파일에 연결됩니다.
{% javascripts '@AcmeFooBundle/Resources/public/js/foo.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
스타일 시트 및 이미지에 대한 유사한 태그가 있습니다. 공지 사항 assetic
에있는 파일에 대한 링크를 수 있는 번들. ( @AcmeFooBundle
). Assetic을 사용하면 와일드 카드를 사용하여 폴더의 여러 파일에 연결할 수도 있습니다.
{% javascripts '@AcmeFooBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
와 또 다른 차이점 assetic
은 생성 된 링크에 있습니다. 에서 dev
환경 그들은 다음과 같이 보일 것입니다.
<script type="text/javascript" src="/app_dev.php/js/foo.js"></script>
<script type="text/javascript" src="/app_dev.php/js/bar.js"></script>
즉, 이러한 파일에 대한 요청 app_dev.php
은 assetic
번들의 특수 경로 설정을 통해 PHP 프런트 컨트롤러 ( )를 통해 실행됩니다 . 즉, dev
모드에 있을 때 자산을 덤프 할 필요가 없습니다. 자동으로 포함됩니다. 또한 파일에 필터를 적용 할 수도 있습니다. 예를 들어 다음 cssrewrite
은 가져온 파일에 필터를 적용합니다 .
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
프런트 엔드 자산의 출력을 프로그래밍 방식으로 변경하려는 경우 assetic
사용자 지정 나뭇 가지 필터를 작성하면됩니다.
그러나 이것은 성능 집약적입니다. 프로덕션에서 PHP 프론트 컨트롤러 파일을 통해 각 파일을 개별적으로 링크하는 대신 생성 된 HTML은 다음과 같습니다.
<script type="text/javascript" src="/js/as5s31l.js"></script>
어디 as5s31l.js
에서 왔습니까? 그것이 assetic:dump
명령이하는 일입니다. 그것은 결합 (필터를 적용한 후) 모든 개별 자바 스크립트 / CSS 파일 및 생산을위한 좋은, 정적, 캐시 파일을 만듭니다.
프로젝트에서 특별히 달리 지시하지 않는 한 항상 assets:install
및을 실행해야 assetic:dump
합니다. 이러한 명령을 사용하는 타사 번들을 알 수 없기 때문입니다. 모드 assetic:dump
에서 애플리케이션을 배포하거나보기 전에 실행 하기 만하면 prod
됩니다. 순서는 무관합니다.
번들에서 사용해야하는 시스템에 대해 설명합니다. 위의 내용을 읽었으며 어떤 assetic
작업을 수행 할 수 있는지 확실하지 않은 경우 assets
. 너는 괜찮아 질거다.
<script type="text/javascript" src="app_dev.php/js/as5s31l.js"></script>
당신이 실제로 의미 않았다 <script type="text/javascript" src="app.php/js/as5s31l.js"></script>