2012-10-26 3 views
4

여러 디렉토리에서 .scss 파일을 컴파일하려면 "add_import_path"(http://compass-style.org/help/tutorials/configuration-reference/)를 사용해야합니다.나침반, 추가 경로 가져 오기 경로

나는 나의 config.rb에

additional_import_paths 
add_import_path "_themes" 
add_import_path = "_themes" 
additional_import_paths = "_themes" 

을 추가하려고했지만, 운, 나침반 = "_modules"


업데이트 sass_dir에서만 컴파일하지 : 예,이 line

"폴더를 찾을 수 없음"오류가 발생하지만 compass sti .scss를 컴파일하지 않겠습니까

내가 뭘 잘못하고 있니?

답변

1

.scss 개의 파일을 여러 개 컴파일하려면 @import "filename";을 사용하여 "하위"파일을 "상위"SASS 파일로 가져와야합니다. 당신이 main.scss이있는 경우 예를 들어라는 아이 스타일 시트에서 더 많은 CSS를 가져올 수 있습니다 예를 들어

은 다음과 같이 child.scss :

내가 이해에서
@import "_modules/child"; 

add_import_path이하는 그 모든 추가 디렉토리에서 파일을 가져올 수 있습니다. 따라서 @import에서 _themes/

this thread을 참조하십시오.

7

여기에 수락 된 답변이 있지만 질문에 답하는 것이 아니라 다른 해결책을 제시합니다. 어느 쪽이 절대적으로 괜찮습니까? 나는 아무에게도 모욕하지 않으려 고합니다. 그러나 여기에없는 것은 add_import_path에 관한 정보이며 그것이 당신을 위해 무엇을하는지에 대한 것입니다.

Magento에서 일한 경험이있는 사용자라면 테마 및 템플릿 파일의 폴백 구조에 익숙합니다. 동일한 기본 스킨을 사용하는 여러 저장소를 설정하려면 미리 정의 된 계층 구조를 변경하는 대체 구조를 포함해야했습니다. 그래서 창피 config.rb 파일을 확인

myThemeA - config.rb

require "font-awesome-sass" 
http_path = "/skin/frontend/rwd/myThemeA/" 
add_import_path "../../../rwd/default/scss" 
css_dir = "../css" 
sass_dir = "../scss" 
images_dir = "../images" 
javascripts_dir = "../js" 
fonts_dir = "../css/fonts" 
relative_assets = true 

output_style = :expanded 
environment = :production 
sourcemap = true 

myThemeB - config.rb

require "font-awesome-sass" 
http_path = "/skin/frontend/rwd/myThemeB/" 
add_import_path "../../../rwd/default/scss" 
additional_import_paths = ["../../../rwd/myThemeA/scss"] 
css_dir = "../css" 
sass_dir = "../scss" 
images_dir = "../images" 
javascripts_dir = "../js" 
fonts_dir = "../../myThemeA/css/fonts" 
relative_assets = true 

output_style = :expanded 
environment = :production 
sourcemap = true 

그래서 여기 아이디어는 우리가 세 가지 스킨을 가지고 있고 우리는 모든 파일을 모든 스킨에 포함하는 대신 특정 파일을 덮어 쓰기 위해서만 가져 오기 경로를 사용할 수 있습니다. 우리가 변화하는 것에 따라 전 지구 적 변화를 원할 때, 우리는 변화를 3 번이나하지 않을 것입니다 - 오직 의존성이 사슬에서 어디에 위치 할 것인가에 달려 있습니다.

그래서 ...

기본

myThemeA 그 자체로 피부이며 기본이다 기본적를 사용하는 모든 스킨의 기본입니다

그것의로 myThemeA 기본적를 사용하면서 기본이야로 myThemeB이 myThemeA를 사용 태만. 이 일을하게 무엇

add_import_pathadditional_import_paths의 위치입니다. 본질적으로, 그것은 기본적으로 처음 정의 된 add_import_path를 사용하고 이후 additional_import_paths 배열 add_import_path에서 무엇보다 우선하지만, 추가에 포함되지 않은 것도, 그것은 기본에 찾아 갈 것입니다.

희망이 수입 경로에 대한 추가 정보를 찾는 사람에게 의미가 있습니다.

+1

'add_import_path'동작의 가져 오기 기능에 대해 알아 봤습니다. sass 컴파일시 가져 오기 경로에있는 파일을 사용합니다. \ _framework.scss, 그 파일에있는 모든 가져 오기 (예 : @import "VAR"을 선택 후 오히려 우리가 있던 원래의 폴더 구조보다 _that_ 파일에 상대적 될 것입니다.이 방법은 myThemeB에서 \의 _var.scss 파일을 가지고 있지만, 경우에 당신이하지 않아도 (귀하의 예제를 사용하여) myThemeB에 \ _framework.scss 파일이 있으면 myThemeB \ _var.scss 파일이 사용되지 않습니다. 테마를 변경하지 않더라도 테마에 파일을 포함해야하므로 성가신 방법입니다. –

+0

접선을하지 않으려 고하지만 이것은 SASS/SCSS보다 적은 장점이라고 생각합니다. Lazy 로딩은이 문제를 불활성으로 간주합니다. 컴파일에서 해당 변수의 최근로드 된 정의를 사용하기 때문입니다. 나는 잠시 동안 Rudy SASS와 놀지 않았다. 본질적으로 게으른로드 인 CSS 변수를 사용하는 것처럼 보입니까? https://github.com/sass/sass/issues/2119 – Plummer

+0

요크셔 곰 설명 어떻게 플러머에 의해 설명 된 바와 같이 테마 환경을 설정하려고 할 때 오늘 내가 경험 한 정확한 동작이며 실현 걸 렸어요 그 내가 달성하려는 것은 간단하지 않습니다. 이 문제에 대한 해결 방법이 있습니까? – loeffel

관련 문제