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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,7 @@
module 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
langs = Dir.glob(HIGHLIGHTJS_DIR + "languages/*.js").map do |path|
@ -13,7 +14,7 @@ module HighlightJs
def self.bundle(langs)
result = File.read(HIGHLIGHTJS_DIR + "highlight.min.js")
langs.each do |lang|
(langs - BUNDLED_LANGS).each do |lang|
begin
result << "\n" << File.read(HIGHLIGHTJS_DIR + "languages/#{lang}.min.js")
rescue Errno::ENOENT