Class: Jekyll::Esbuild::Engine
- Inherits:
-
Object
- Object
- Jekyll::Esbuild::Engine
- Defined in:
- lib/jekyll-esbuild.rb
Overview
Class that applies esbuild to JavaScript files using specified options
Instance Method Summary collapse
- #get_command_args(file_path) ⇒ Object
-
#initialize(source, options = {}) ⇒ Engine
constructor
A new instance of Engine.
- #process(file_path) ⇒ Object
Constructor Details
#initialize(source, options = {}) ⇒ Engine
Returns a new instance of Engine.
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/jekyll-esbuild.rb', line 11 def initialize(source, = {}) Jekyll.logger.debug 'JekyllEsbuild:', 'Initializing engine' @script = File.([:script] || 'node_modules/.bin/esbuild', source) unless File.exist?(@script) Jekyll.logger.error 'JekyllEsbuild:', "Script #{@script} not found." exit 1 end @bundle = .fetch(:bundle, true) @minify = .fetch(:minify, 'environment') @sourcemap = .fetch(:sourcemap, 'environment') end |
Instance Method Details
#get_command_args(file_path) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/jekyll-esbuild.rb', line 24 def get_command_args(file_path) is_prod = ENV.fetch('NODE_ENV', 'development') == 'production' args = [@script, file_path.to_s, "--outfile=#{file_path}", '--allow-overwrite'] args << '--bundle' if @bundle args << '--minify' if @minify == 'always' || (@minify == 'environment' && is_prod) args << '--sourcemap' if @sourcemap == 'always' || (@sourcemap == 'environment' && !is_prod) args end |
#process(file_path) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/jekyll-esbuild.rb', line 36 def process(file_path) args = get_command_args(file_path) _, stderr, status = Open3.capture3(*args) unless status.success? Jekyll.logger.error 'JekyllEsbuild:', "Failed with error: #{stderr}" raise "Esbuild failed with status #{status.exitstatus}" end Jekyll.logger.info 'JekyllEsbuild:', "Processed #{file_path}" end |