class VueApp::Core::Builders::JsBuilder
Build one javascript file
Public Class Methods
Create a JS builder for a specific environment @param [Symbol] env @raise [VueApp::Errors::InvalidENV]
# File lib/vueapp/core/builders/js_builder.rb, line 17 def initialize(env = :development) init_env(env) end
Private Instance Methods
Merge all *.js files into one file
# File lib/vueapp/core/builders/js_builder.rb, line 118 def all_js_into_one_file File.open(base_js_file, 'w') do |file| js_files.each do |js_file| file.write('/* file: ' + js_file + " */\n") if development? file.write(File.read(js_file)) end end end
Base js filename @return [Pathname]
# File lib/vueapp/core/builders/js_builder.rb, line 101 def base_js_file build_path.join('scripts.js') end
Build dev js file
# File lib/vueapp/core/builders/js_builder.rb, line 24 def build_dev timer_block( 'Start [development] build for *.js files', 'JS time: ') do all_js_into_one_file end end
# File lib/vueapp/core/builders/js_builder.rb, line 32 def build_production timer_block( 'Start [production] build for *.js files', 'JS time: ') do all_js_into_one_file compress_min_js end end
All *.js files from [components] folder @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 70 def components_js Dir[src_path.join('components', '**', '*.js').to_s] end
Compress and minify js file
# File lib/vueapp/core/builders/js_builder.rb, line 128 def compress_min_js File.open(min_js_file, 'w') do |file| file.write( compressor.compile(File.read(base_js_file)) ) end FileUtils.mv(min_js_file, base_js_file) FileUtils.remove_file(min_js_file, true) end
Get compressor object @return [Uglifier]
# File lib/vueapp/core/builders/js_builder.rb, line 113 def compressor Uglifier.new(harmony: true) end
All *.js files from [config] folder @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 82 def config_js [ src_config_path.join('routes.js').to_s, src_config_path.join('router.js').to_s, src_config_path.join('app.js').to_s ] end
All *.js files from [filters] folder @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 64 def filters_js Dir[src_path.join('filters', '**', '*.js').to_s] end
Get all [*.js] file in the app path (ordered) @return [Array<String>] all [*.js] files
# File lib/vueapp/core/builders/js_builder.rb, line 92 def js_files [ vue_lib_js, mixins_js, filters_js, components_js, pages_js, config_js ].flatten! end
Minified base js filename @return [Pathname]
# File lib/vueapp/core/builders/js_builder.rb, line 107 def min_js_file build_path.join('scripts.min.js') end
All *.js files from [mixins] folder @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 58 def mixins_js Dir[src_path.join('mixins', '**', '*.js').to_s] end
All *.js files from [pages] folder @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 76 def pages_js Dir[src_path.join('pages', '**', '*.js').to_s] end
Vue.js
# File lib/vueapp/core/builders/js_builder.rb, line 42 def vue_js if development? src_vendor_path.join('vue.dev.js').to_s else src_vendor_path.join('vue.js').to_s end end
Vue.js and required libs @return [Array<String>]
# File lib/vueapp/core/builders/js_builder.rb, line 52 def vue_lib_js [vue_js, src_vendor_path.join('vue_router.js').to_s] end