PERF: Do not double bundle common langs in hljs bundle (#18321)

At some point moved from hljs pure source to their CDN assets, but we
did not change the way we created the HLJS bundle. The CDN asset comes
with their "common" languages already included, so we were duplicating
around 35 languagues in the bundle we create.

This patch includes a list of their current common langs so we never
double bundle those.

Changes in size are significant. Numbers before minimization/compression
are 747.53 KB before and 117.57 KB after.
This commit is contained in:
Rafael dos Santos Silva
2022-09-21 19:08:21 -03:00
committed by GitHub
parent 885e133cac
commit edb201f55b

View File

@ -2,6 +2,7 @@
module HighlightJs module HighlightJs
HIGHLIGHTJS_DIR ||= "#{Rails.root}/vendor/assets/javascripts/highlightjs/" HIGHLIGHTJS_DIR ||= "#{Rails.root}/vendor/assets/javascripts/highlightjs/"
BUNDLED_LANGS = %w(bash c cpp csharp css diff go graphql ini java javascript json kotlin less lua makefile xml markdown objectivec perl php php-template plaintext python python-repl r ruby rust scss shell sql swift typescript vbnet wasm yaml)
def self.languages def self.languages
langs = Dir.glob(HIGHLIGHTJS_DIR + "languages/*.js").map do |path| langs = Dir.glob(HIGHLIGHTJS_DIR + "languages/*.js").map do |path|
@ -13,7 +14,7 @@ module HighlightJs
def self.bundle(langs) def self.bundle(langs)
result = File.read(HIGHLIGHTJS_DIR + "highlight.min.js") result = File.read(HIGHLIGHTJS_DIR + "highlight.min.js")
langs.each do |lang| (langs - BUNDLED_LANGS).each do |lang|
begin begin
result << "\n" << File.read(HIGHLIGHTJS_DIR + "languages/#{lang}.min.js") result << "\n" << File.read(HIGHLIGHTJS_DIR + "languages/#{lang}.min.js")
rescue Errno::ENOENT rescue Errno::ENOENT