Django-compressor: JS ํŒŒ์ผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ•์†Œ๋˜์ง€๋งŒ CSS ํŒŒ์ผ์€ ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 11์›” 08์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: django-compressor/django-compressor

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Django(1.8.2)์™€ django-compressor(2.2)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•๋œ js๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ CSS ํŒŒ์ผ์€ ์••์ถ•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋‚ด ํ…œํ”Œ๋ฆฟ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

{% load staticfiles %}
{% load compress %}
{% compress css %}
<link rel="stylesheet" href="{% static 'landing/style.css' %}" type="text/css"></head>
{% endcompress %}
{% compress js %}
<script src="{% static 'landing/js/jquery.min.js' %}"></script>
<script src="{% static 'landing/js/ads.js' %}"></script>
<script src="{% static 'landing/js/ads.js' %}"></script>
{% endcompress %}

css ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ์›๋ณธ ํŒŒ์ผ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์ฐธ์กฐ. ์ด ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter']

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

settings.py๋ฅผ ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค.

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'compressor',
)

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

STATICFILES_FINDERS = (
  'django.contrib.staticfiles.finders.FileSystemFinder',
  'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  'compressor.finders.CompressorFinder',
)

COMPRESS_ENABLED = True
COMPRESS_OUTPUT_DIR = 'compress'
STATIC_ROOT = '/home/service/growth/static_file/static'

css๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์••์ถ•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_CSS_FILTERS ์—์„œ ๊ธฐ๋ณธ ์„ค์ •์„ ์ฐธ์กฐ

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. CSS์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CSS์—์„œ ์ž‘๋™ํ•˜๋„๋ก COMPRESS_CSS_FILTERS ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ค ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ฐธ์กฐ. ์ด ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter']

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฐœํ•  ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ๋‚˜๋Š” setup.py:install_requires์—์„œ rcssmin์„ ์ œ๊ฑฐํ•˜๊ณ  '์‚ฌ์šฉ'๊ณผ ๊ฐ™์€ ๋ฌธ์„œ์˜ ๋ช…๋ฐฑํ•œ ์œ„์น˜์— ํ˜„์žฌ์˜ ์˜คํ•ด๋ฅผ ๋ช…์‹œํ•˜์‹ญ์‹œ์˜ค.

@dilyanpalauzov ์ด์— ๋Œ€ํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ...์‚ฌ์‹ค, ์ €๋Š” ์ด๊ฒƒ์„ ๋ฒ„๊ทธ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ rcssmin์„ ์„ค์น˜ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๋ฏ€๋กœ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋‚จ๊ฒจ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์„œํ™”๋Š” ๋ฌผ๋ก  ์ด๊ฒƒ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋ฐฉ๊ธˆ django-compressor๋ฅผ ์„ค์น˜ํ•˜๊ณ  CSS๊ฐ€ ๋‚ด JS์ฒ˜๋Ÿผ ์ถ•์†Œ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ๊นŒ์ง€ ์™”์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฐธ์กฐ. ์ด ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter']

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์••์ถ• ํŒŒ์ผ์— ๋Œ€ํ•œ min.js ๋˜๋Š” min.css๋ฅผ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰