1
0
Fork 0

2024-12-29

This commit is contained in:
Gennadiy 2024-12-29 10:39:46 +03:00
parent 495357637f
commit e279029a02
3 changed files with 34 additions and 40 deletions

View file

@ -72,7 +72,7 @@ sudo gem install --local color-tomato-theme-1.0.1.gem
The site can be built using the `jekyll build` command. After that, we get the `_site` folder with the
generated pages and the `assets` subfolder from the theme. We move the contents of this subfolder back
to the `_site` folder — we get shorter links, that are used in the theme. After that we bypass HTML pages
and optimize a number of tags also for shortness and for correctness. Additionally, we copy from theme the
and optimize a set of tags also for shortness and for correctness. Additionally, we copy from theme the
redirection file to the root of the site for all subdirectories, if they don't contain the `index.html`
file. The script is intended for this purpose.
@ -81,25 +81,22 @@ file. The script is intended for this purpose.
cd _site || exit
cp -r assets/* .
rm -r assets
# optimizing a number of tags
function optimize_html {
echo "Optimize: $1"
sed -i 's|layout-padding=""|layout-padding|g' "$1"
sed -i 's| class="language-plaintext highlighter-rouge"||g' "$1"
sed -i 's| class="language-java highlighter-rouge"||g' "$1"
sed -i 's| class="language-html highlighter-rouge"||g' "$1"
sed -i 's| class="language-js highlighter-rouge"||g' "$1"
sed -i 's| class="language-bash highlighter-rouge"||g' "$1"
sed -i 's|<div><div class="highlight">|<div class="highlight">|g' "$1"
sed -i 's|</pre></div></div>|</pre></div>|g' "$1"
sed -i -r 's|<input(.+) />|<input\1>|g' "$1"
sed -i -r 's|<img(.+) />|<img\1>|g' "$1"
}
export -f optimize_html
# launching parallel processing of gathered pages and optimizing a number of tags
find . -type f -name "*.html" -print0 | xargs -I{} -n1 -0 -P0 bash -c 'optimize_html "{}"'
# transition page to the root of the site for directories without a main page
find . -type d -print0 | xargs -I{} -n1 -0 -P0 cp -n return.html {}/index.html
# patterns for optimizing a set of tags
expr+=('s|layout-padding=""|layout-padding|g')
expr+=('s| class="language-plaintext highlighter-rouge"||g')
expr+=('s| class="language-java highlighter-rouge"||g')
expr+=('s| class="language-html highlighter-rouge"||g')
expr+=('s| class="language-js highlighter-rouge"||g')
expr+=('s| class="language-bash highlighter-rouge"||g')
expr+=('s|<div><div class="highlight">|<div class="highlight">|g')
expr+=('s|</pre></div></div>|</pre></div>|g')
expr+=('s|<input(.+) />|<input\1>|g')
expr+=('s|<img(.+) />|<img\1>|g')
# launching parallel processing of gathered pages and optimizing a set of tags
find . -type f -name "*.html" -printf '%p\0' | xargs -I{} -n1 -0 -P0 bash -c \
"echo 'Optimize: {}' && sed -i -E $(printf " -e '%s'" "${expr[@]}") '{}'"
# transition to the site root for directories without a main page
find . -type d -exec cp -n return.html {}/index.html \;
rm -r return.html
```

View file

@ -80,25 +80,22 @@ sudo gem install --local color-tomato-theme-1.0.1.gem
cd _site || exit
cp -r assets/* .
rm -r assets
# оптимизация ряда тегов
function optimize_html {
echo "Оптимизация: $1"
sed -i 's|layout-padding=""|layout-padding|g' "$1"
sed -i 's| class="language-plaintext highlighter-rouge"||g' "$1"
sed -i 's| class="language-java highlighter-rouge"||g' "$1"
sed -i 's| class="language-html highlighter-rouge"||g' "$1"
sed -i 's| class="language-js highlighter-rouge"||g' "$1"
sed -i 's| class="language-bash highlighter-rouge"||g' "$1"
sed -i 's|<div><div class="highlight">|<div class="highlight">|g' "$1"
sed -i 's|</pre></div></div>|</pre></div>|g' "$1"
sed -i -r 's|<input(.+) />|<input\1>|g' "$1"
sed -i -r 's|<img(.+) />|<img\1>|g' "$1"
}
export -f optimize_html
# запуск параллельной обработки собранных страниц и оптимизации ряда тегов
find . -type f -name "*.html" -print0 | xargs -I{} -n1 -0 -P0 bash -c 'optimize_html "{}"'
# страница перехода в корень сайта для каталогов без заглавной страницы
find . -type d -print0 | xargs -I{} -n1 -0 -P0 cp -n return.html {}/index.html
# шаблоны для оптимизации ряда тегов
expr+=('s|layout-padding=""|layout-padding|g')
expr+=('s| class="language-plaintext highlighter-rouge"||g')
expr+=('s| class="language-java highlighter-rouge"||g')
expr+=('s| class="language-html highlighter-rouge"||g')
expr+=('s| class="language-js highlighter-rouge"||g')
expr+=('s| class="language-bash highlighter-rouge"||g')
expr+=('s|<div><div class="highlight">|<div class="highlight">|g')
expr+=('s|</pre></div></div>|</pre></div>|g')
expr+=('s|<input(.+) />|<input\1>|g')
expr+=('s|<img(.+) />|<img\1>|g')
# запуск параллельной обработки собранных страниц и оптимизация ряда тегов
find . -type f -name "*.html" -printf '%p\0' | xargs -I{} -n1 -0 -P0 bash -c \
"echo 'Оптимизация: {}' && sed -i -E $(printf " -e '%s'" "${expr[@]}") '{}'"
# переход в корень сайта для каталогов без заглавной страницы
find . -type d -exec cp -n return.html {}/index.html \;
rm -r return.html
```

View file

@ -20,4 +20,4 @@ convert -verbose $output -resize 240x200 -strip $output
# перемещение полученного изображения в основную папку темы
mv -vf $output ../jekyll_theme/assets/img
#-------------------------------------------------------------------------;
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$time_ms")) мс."
echo "Общее время выполнения: $(($(date '+%s%3N') - time_ms)) мс."