SASS에서 생성된 CSS를 애플리케이션 및 소스 제어에 저장하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/86018

  •  01-07-2019
  •  | 
  •  

문제

Rails 애플리케이션에서 HAML 및 SASS를 사용하는 경우 public/stylesheet/*.sass에 정의한 모든 템플릿은 *.css 스타일시트로 컴파일됩니다.코드에서 stylesheet_link_tag를 사용하여 확장에 대해 걱정할 필요 없이 이름으로 자산을 가져옵니다.

많은 사람들이 생성된 코드나 컴파일된 코드를 버전 제어에 저장하는 것을 싫어하며, 이는 브라우저에 보내지 않는 요소를 public/ 디렉토리에 포함해서는 안 된다는 이유이기도 합니다.

Rails 프로젝트에서 SASS 리소스를 배치할 때 따라야 할 가장 좋은 패턴은 무엇입니까?

도움이 되었습니까?

해결책

나는 항상 "public/stylesheets/sass/*.sass"에 있는 모든 스타일시트의 버전을 지정하고 컴파일된 스타일시트에 대해 제외 필터를 설정합니다.

/public/stylesheets/*.css

다른 팁

그만큼 나침반 프레임워크에서는 sass 스타일시트를 app/stylesheets 아래에 배치하고 컴파일된 CSS를 public/stylesheets/compiled에 배치할 것을 권장합니다.

Environment.rb에 다음 코드를 추가하여 이를 구성할 수 있습니다.

Sass::Plugin.options[:template_location] = {
  "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}

Compass 프레임워크를 사용하는 경우 이를 설치할 때 이 구성이 자동으로 설정됩니다.

솔직히 저는 컴파일된 SASS 스타일시트를 버전 관리에 두는 것을 좋아합니다.크기가 작고 .sass 파일이 변경될 때만 변경되며 앱의 나머지 부분과 함께 배포하면 SASS 컴파일러가 프로덕션에서 실행될 필요가 없습니다.

(작지만) 또 다른 장점은 페이지 캐싱을 사용하지 않는 경우 Rails 프로세스에 쓰기 액세스 권한이 필요하지 않다는 것입니다. public_html 예배 규칙서.따라서 서버를 악용하는 행위가 해로울 수 있는 방법이 한 가지 더 적습니다.

다소 관련이 있지만 Capistrano 배포 중에 CSS를 다시 생성하는 것이 좋습니다.이 콜백 후크는 다음과 같은 작업을 수행합니다.

after "deploy:update_code" do
  rails_env = fetch(:rails_env, "production")
  run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end

업데이트:Haml/Sass의 최신 버전에서는 더 이상 필요하지 않습니다.

관리할 수 있다면 프로젝트에 HAML/SASS를 선택할 때 모든 스타일을 SASS 템플릿에 저장하고 application.css 및 scaffold.css를 제거하겠습니다.그런 다음 SASS를 public/stylesheets/sass에 넣고 /public/stylesheets/*.css를 .gitignore에 추가하겠습니다.

SASS와 CSS 기반 자산을 조합하여 작업해야 한다면 좀 더 복잡해집니다.이를 처리하는 가장 간단한 방법은 스타일시트 디렉토리 내에 생성된 CSS에 대한 출력 하위 디렉토리를 두고 .gitignore에서 해당 하위 디렉토리를 제외하는 것입니다.그런 다음, public/stylesheets/foo 스타일시트 또는 public/stylesheets/sass-out/foo 스타일시트를 선택해야 하기 때문에 뷰에서 사용 중인 스타일 유형(SASS 또는 CSS)을 알아야 합니다.

두 번째 경로로 가야 한다면 sass-out 하위 디렉터리를 추상화하는 도우미를 만드세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top