Компиляция js. Google Closure Compiler (Docker)

0

В рамках оптимизации сайта «Ящик Пандоры», понадобилось компилировать ява скрипты на лету. Для этого можно использовать Докер контейнер с Google Closure Compiler.

Dockerfile контейнера достаточно прост:

FROM alpine:3.5
COPY resources/cc.sh /opt/cc.sh
RUN apk add --no-cache --update openjdk8-jre curl unzip \
    && curl https://dl.google.com/closure-compiler/compiler-20200719.zip >> /tmp/cc.zip \
    && unzip -d /tmp /tmp/cc.zip c*.jar \
    && cp /tmp/c*.jar /opt/closure-compiler.jar \
    && rm /tmp/c*.jar \
    && chmod +x /opt/cc.sh 
ENTRYPOINT ["/opt/cc.sh"]

Копируем последнюю версию gcc и запускаем cc.sh, со следующим содержимым:

#!/bin/sh -e
CC="/opt/closure-compiler.jar"
exec java -jar $CC $*

Собранный контейнер можно скопировать отсюда https://hub.docker.com/r/brahman/gcc

Для того, чтобы с помощью этого контейнера компилировать свои ява скрипты, напишем простой скрипт шелл compile.sh:

#!/usr/bin/env bash
WORK_DIR="/var/www/yoursite/jsmin"


for file in `find $WORK_DIR -name 'orig*'`; do
    name="${file##*/}"
	
    min_name="${nname//"orig."/"min."}"

    min_path="$WORK_DIR/$min_name"
    
   
	if [ -f $min_path ]; then
	   echo "The file '$min_name' exists."
	else
	   echo "The file '$min_name' in not found. Compile"
	   `docker run -i --rm -v $WORK_DIR:/opt/scripts brahman/gcc --js /opt/scripts/$nname --js_output_file /opt/scripts/$min_name`;
	fi
done

Скрипт находит в папке «/var/www/yoursite/jsmin» все файлы начинающиеся с «orig.», и создаёт для них компилированные версии с именами, начинающимися с «min.».

Например, если нам нужно откомпилировать «custom.js», мы копируем его в вышеуказанную директорию под именем «orig.custom.js», запускаем shell скрипт «compile.sh» и получаем «min.custom.js». Далее мы можем использовать минифицированный скрипт в своём проекте.

Поделиться:

Оставить комментарий

Вы вошли как Гость. Вы можете авторизоваться

Будте вежливы. Не ругайтесь. Оффтоп тоже не приветствуем. Спам убивается моментально.
Оставляя комментарий Вы соглашаетесь с правилами сайта.

(Обязательно)

Информация о сайте

Компания «Емельянов и партнёры» занимается разработкой, поддержкой и оптимизацией веб сайтов.

На данном сайте публикуются материалы по разработке сайтов и другим интересным вопросам.

Прежде чем приступать к просмотру сайта, ознакомьтесь с разделами:

Сайт может содержать контент, не предназначенный для лиц младше 18-ти лет.
Использование материалов сайта приветствуется при размещении активной ссылки на источник.

Со всеми вопросами и предложениями обращайтесь по почте info@emelianovip.ru