Django-compressor: Sass, рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдмрд┐рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдлрд╝рд░ре░ 2017  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: django-compressor/django-compressor

рд╣реИрд▓реЛ, рдореИрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк 4 рдЕрд▓реНрдлрд╛ 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВред рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдмреАрдПрд╕ 4 рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЧрд╣рд░рд╛ рдЦреЛрджрд╛ рдФрд░ рдЙрддреНрдкрдиреНрди рд╕реАрдПрд╕рдПрд╕ рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред

рдореИрдВ Django 1.8.17, рдХрдВрдкреНрд░реЗрд╕рд░ 2.1.1, Sass 3.4.22 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдпрд╣рд╛рдВ рдкрд╣рд▓реА рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реАред

рддреНрд░реБрдЯрд┐ рдбрдмрд▓ рдХреЛрдЯ " рдореЗрдВ stroke='rgba(0, 0, 0, 0.5")', рдЬрдмрдХрд┐ рдпрд╣ stroke='rgba(0, 0, 0, 0.5)' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдЕрдорд╛рдиреНрдп рд▓рд╛рдЗрди (рдбреАрдЬреЗ рдХрдВрдкреНрд░реЗрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)

.navbar-light .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5")' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); }

рдорд╛рдиреНрдп рд▓рд╛рдЗрди (рдПрд╕рдПрдПрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)

.navbar-light .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); }

рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

_рдкреГрд╖реНрдарднреВрдорд┐-рдЫрд╡рд┐_ рдХрд╛ рд╕реНрд░реЛрдд

$navbar-light-toggler-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"), "#", "%23") !default;

$navbar-light-color:                rgba($black,.5) !default;

$black:  #000 !default;

рд╣рдо рдбреАрдЬреЗ рдХрдВрдкреНрд░реЗрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ

{% compress css %}
<link rel="stylesheet" type="text/x-scss" media="screen" charset="utf-8"
    href="/static/bootstrap/scss/bootstrap.scss" />
{% endcompress %}
COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/x-sass', 'sass {{infile}} {{outfile}} --load-path {}'.format(LIB_PATH)),
    ('text/x-scss', 'sass --scss {{infile}} {{outfile}} --load-path {}'.format(LIB_PATH)),
)

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрд╣реБрдд рдмреБрд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА, рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ/рдХреЛрдИ рднреА рд╕рдВрдХреЗрдд рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдЧрд╛ред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:

  • рдХреНрдпрд╛ рдпрд╣ COMPRESS_ENABLED = False ?
  • рдХреНрдпрд╛ рдЖрдк рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Sass рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рди рд╣реИ? (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рднреА рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЗрдирдкреБрдЯ рдХреЛ рд╕реИрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реМрдВрдк рд░рд╣рд╛ рд╣реИ - рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд░рджреНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред)

@carltongibson :

  • рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ COMPRESS_ENABLED = False , рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдЗрд╕реЗ True рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЧрдпрд╛ред
  • рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ sass рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдирд╛
$ sass -v 
Sass 3.4.22 (Selective Steve)

рдореИрдВрдиреЗ рдХрдВрдкреНрд░реЗрд╕рд░ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрд╕рдПрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдмреВрдЯрд╕реНрдЯреНрд░реИрдк.рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмреЙрдбреА рдмреА рдПрдХрдЧреНрд░рд╛рдЙрдВрдб рд╣реИ: рд╡реИрдз/рдкрд╛рд░реНрд╕реЗрдмрд▓ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рдЪреЗрдХрд▓рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд░рд╛ ред рдореБрдЭреЗ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд .css рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП 'рд╣рд░рд╛' рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди .sass рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рдЬрд╣рд╛рдВ рдХрдВрдкреНрд░реЗрд╕рд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдмрдирд╛рддрд╛ рд╣реИред

@wjdp рдареАрдХ рд╣реИ рдзрдиреНрдпрд╡рд╛рджред рд╣рдореНрдоред

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдореИрдВ Compressor.precompile рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ content рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдлрд┐рд░ hunks() рдореЗрдВ рдкреНрд░реАрдХрдВрдкреЗрд▓рд░ рд╕реЗ value рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╕рд╣реА рд╣реИ?

рдореИрдВ рдЕрднреА рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ #764 рдЬреИрд╕реА рд╣реА рд╣реИред CssAbsoluteFilter URL рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП r'url\(([^\)]+)\)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рдорд╛рдкрди рдХреЛрд╖реНрдардХ рдкрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд░реЗрдЧреЗрдХреНрд╕ рдиреЗрд╕реНрдЯреЗрдб рдХреЛрд╖реНрдардХ рдХреА рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рддреАрди рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:

  1. рдиреЗрд╕реНрдЯреЗрдб рдХреЛрд╖реНрдардХ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╕реНрддрд░ рд╕реЗ рдирд┐рдкрдЯреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  2. рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмреБрджреНрдзрд┐рдорд╛рди рдорд┐рд▓рд╛рди рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд░реЗрдВ
  3. рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдФрд░ рдореИрдВ рд╡рд┐рдХрд▓реНрдк 1 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрджрд┐ рдХреЛрдИ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

#828 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХреЛрд╖реНрдардХ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдорд╛рдкрди рдЙрджреНрдзрд░рдгреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЦреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП url("data:...stroke='rgba(0, 0, 0, 0.5) рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛) рдФрд░, рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛-рдпреВрд░рд┐рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@wjdp рдХреНрдпрд╛ рдЖрдк #828

рдХрд░реЗрдЧрд╛

@carltongibson рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреАрдЖрд░ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЗ рдмрд╣реБрдд рддреЗрдЬрд╝ рдХрд╛рдо рдХреЗ рд▓рд┐рдП @karyon рдзрдиреНрдпрд╡рд╛рдж! :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдлреЙрд▓реЛ рдЕрдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

markstahler picture markstahler  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

simonwiles picture simonwiles  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amosjyng picture amosjyng  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

camilonova picture camilonova  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

badbye picture badbye  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ