© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

Django - Урок 026. Настройка минификации CSS и JavaScript кода в PyCharm

Minification, CSS, JavaScript

При разработке сайта часто обращают внимание на то, что сайт должен иметь малое время отклика на действия пользователя, поэтому применяют различные методы для улучшения производительности сайта, такие как кеширование данных на стороне пользователя, использование Cookie файлов, а также минификацию CSS и JavaScript файлов. Минификация кода этих файлов позволяет удалить ненужные пробелы, символы и комментарии, которые не нужны на рабочем сервере, а требуются лишь для разработки проекта.

Традиционно к исходному раширению файла добавляется дополнительное под расширение min, которое означает минифицированный файл.

  • style.css -> style.min.css
  • scripts.js -> scripts.miin.js

Предлагаю настроить среду разработки PyCharm для автоматической минификации всех этих файлов в вашем Django проекте.

Минификация кода css и jsavascript поддерживается только в PyCharm Professional Edition.

Важный момент, настройка будет производится под Ubuntu-based операционную систему KDE Neon 5.8 . Установку необходимых пакетов под Windows я не рассматриваю, поскольку считаю, что разработка Django проекта под этой ОС - это моветон.

Чем производится минификация?

Минификация кода будет производиться двумя утилитами:

  • YUI Compressor - будем использовать его для минификации CSS
  • Closure Compiler - будем использовать его для минификации JavaScript

В принципе YUI Compressor может использоваться и для минификации JavaScript кода, но с версией ECMA 6 , который также используется у меня он выдавал ошибки. Поэтому для минификации JavaScript я использовал Closure Compiler.

Установка

Для установки этих пакетов используем Node Package Manager (npm).

Для этого установим NPM , если он у вас ещё не установлен.

sudo apt install nodejs npm

Далее из домашней папки пользователя произведём установку пакетов через NPM

npm install yuicompressor
npm install closure-compiler

Программы будут установлены в каталог node_modules в вашей домашней директории.

../node_modules
  ../yuicompressor
  ../closure-compiler
  ../google-closure-compiler

Настройка PyCharm

Для настройка минификации необходимо создать File Watcher , который будет запускать необходимую программу при изменении файлов. При этом в PyCharm уже имеются преднастроенные наблюдатели файлов, в которые необходимо лишь добавить пути к исполяемым файлам минификаторов.

Настройка минификации CSS

Для этого переходим в настройки File | Settings ищем там пункт меню Tools | File Watcher, в File Wather нажимаем кнопку с плюсом для добавления наблюдателя и выбираем YUI Compressor CSS. В Watcher Settings необходимо для поля ввода Program указать путь к исполняемому файлу yuicompressor-<version>.jar.

Он должен будет располагаться по следующему пути:

/home/user/node_modules/yuicompressor/buils/yuicompressor-<version>.jar

Подтверждаем созданием наблюдателя, применяем настройки.

Настройка минификации JavaScript

Для этого переходим в настройки File | Settings ищем там пункт меню Tools | File Watcher, в File Wather нажимаем кнопку с плюсом для добавления наблюдателя и выбираем Closure Compiler. В Watcher Settings необходимо для поля ввода Program указать путь к исполняемому файлу compiler.jar.

Он должен будет располагаться по следующему пути:

/home/user/node_modules/google-closure-compiler/compiler.jar

Подтверждаем созданием наблюдателя, применяем настройки.

Для поддержки стандарта JavaScript ECMA 6 необходимо в Watcher Settings в поле Arguments добавить следующий аргумент, который будет передаваться утилите при запуске --language_in=ECMASCRIPT6

Для Django рекомендую VDS-сервера хостера Timeweb .

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
21 сентября 2018 г. 15:37
irishaa

C++ - Тест 005. Структуры и Классы

  • Результат 41баллов,
  • Очки рейтинга-8
20 сентября 2018 г. 20:16
ZaRYa

C++ - Тест 001. Первая программа и типы данных

  • Результат 46баллов,
  • Очки рейтинга-6
17 сентября 2018 г. 20:45
Иван Поп

C++ - Тест 001. Первая программа и типы данных

  • Результат 93баллов,
  • Очки рейтинга8
Последние комментарии
21 сентября 2018 г. 9:24
Евгений Легоцкой

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Если я вас правильно понял, то авторестарт сюда дописывается  QString autorunContent. Не могли бы вы не выделять пока слова жирным текстом, в комментариях сломан парсинг тегов, завтра буд...
21 сентября 2018 г. 9:08
avovana

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Спасибо за статью! Пример рабочий! Со своим проектом тоже получилось! Наткнулся на эту статью когда решал задачу запуска Qt app с помощью . Когда пробовал с помощью...
20 сентября 2018 г. 13:27
Евгений Легоцкой

Привет Qt для Python

Может быть, я не все новости отслеживаю по Qt. По возможности слежу, но не всегда удаётся.
20 сентября 2018 г. 13:17
OBEH

Привет Qt для Python

По моему. в последней версии Qt анонсировали поддержку Python. Я где-то видел видео. К сожалению. не помню ссылку. Там что-то. типа. проекта "Qt forPython". Все аналогично тому. как для ...
20 сентября 2018 г. 9:58
Евгений Легоцкой

Привет Qt для Python

Qt Creator и Qt Designer по сути не имеют поддержки Python, чтобы код автоматически генерировался и т.д. Нужно устанавливаться дополнительные инструменты. Например сам Python, рекмоендую...
Сейчас обсуждают на форуме
22 сентября 2018 г. 16:21
Евгений Сальников

Проблемы при создании приложения под андроид

Добрый день!Хочу написать приложения для себя на телефон. Но запнулся на этапе создания проекта. в профилях Qt для Qt 5.11.2 for Android ARMv7 и Qt 5.11.2 for Android x86 пишет что: компилятор не...
21 сентября 2018 г. 8:25
Евгений Легоцкой

Прокси-модель, содержащая на 1 столбец больше, чем модель-источник.

Попробуйте ещё PySide 2 - это официально поддерживаемый пакет привязок Python к Qt, возможно, что там не будет таких проблем.
20 сентября 2018 г. 20:06
Евгений Легоцкой

Qt Installer Framework

Добрый день. Зачем собирать Qt Installer Framework-то из исходников? Я ещё понимаю Qt собирают из исходников статически (хотя тоже считаю по большей части бесполезной тратой времени),...
19 сентября 2018 г. 10:19
Евгений Легоцкой

Как в listview подставить модель?

Добрый день. А нельзя ли использовать какой-нибудь глобальный map контейнер, который бы мапил названия моделей на указатели этих моделей?
17 сентября 2018 г. 11:08
Евгений Легоцкой

Проблемы с статической компиляцией Qt с MySQL

Ну если, то да. Тогда просто буду давать ссылку на этот топик, если будут возникать подобные вопросы. Спасибо за ответ.
Присоединяйтесь к нам в социальных сетях