class VueApp::Core::Builders::ScssBuilder

SCSS builder

Public Class Methods

new(env = :development) click to toggle source

Create a SCSS builder for a specific environment @param [Symbol] env @raise [VueApp::Errors::InvalidENV]

# File lib/vueapp/core/builders/scss_builder.rb, line 16
def initialize(env = :development)
  init_env(env)
end

Private Instance Methods

all_scss_into_one_file() click to toggle source

Merge all *.scss files into one file

# File lib/vueapp/core/builders/scss_builder.rb, line 79
def all_scss_into_one_file
  File.open(base_scss_file, 'w') do |file|
    sass_files.each do |sass_file|
      file.write("/* file:  #{sass_file} */\n") if development?
      file.write(File.read(sass_file))
    end
  end
end
base_css_file() click to toggle source

Base css filename @return [Pathname]

# File lib/vueapp/core/builders/scss_builder.rb, line 42
def base_css_file
  build_path.join('styles.css')
end
base_scss_file() click to toggle source

Base scss filename @return [Pathname]

# File lib/vueapp/core/builders/scss_builder.rb, line 48
def base_scss_file
  build_path.join('styles.scss')
end
build_dev() click to toggle source
# File lib/vueapp/core/builders/scss_builder.rb, line 22
def build_dev
  timer_block(
    'Start [development] build for *.scss files',
    'CSS time: ') do
    all_scss_into_one_file
    compress_css
  end
end
build_production() click to toggle source
# File lib/vueapp/core/builders/scss_builder.rb, line 31
def build_production
  timer_block(
    'Start [production] build for *.scss files',
    'CSS time: ') do
    all_scss_into_one_file
    compress_min_css
  end
end
components_scss() click to toggle source

All *.scss files from [components] folder @return [Array<String>] all [*.scss] files

# File lib/vueapp/core/builders/scss_builder.rb, line 60
def components_scss
  Dir[src_path.join('components', '**', '*.scss').to_s]
end
compress_css() click to toggle source

Compress scss file

# File lib/vueapp/core/builders/scss_builder.rb, line 101
def compress_css
  File.open(base_css_file, 'w') do |file|
    file.write(
      SassC::Engine.new(
        File.read(base_scss_file), style: :expanded
      ).render
    )
  end
  FileUtils.remove_file(base_scss_file, true)
end
compress_min_css() click to toggle source

Compress and minify scss file

# File lib/vueapp/core/builders/scss_builder.rb, line 89
def compress_min_css
  File.open(base_css_file, 'w') do |file|
    file.write(
      SassC::Engine.new(
        File.read(base_scss_file), style: :compressed
      ).render
    )
  end
  FileUtils.remove_file(base_scss_file, true)
end
pages_scss() click to toggle source

All *.scss files from [pages] folder @return [Array<String>] all [*.scss] files

# File lib/vueapp/core/builders/scss_builder.rb, line 66
def pages_scss
  Dir[src_path.join('pages', '**', '*.scss').to_s]
end
sass_files() click to toggle source

Get all [*.scss] file in the app path @return [Array<String>] all [*.scss] files

# File lib/vueapp/core/builders/scss_builder.rb, line 72
def sass_files
  [
    styles_scss, components_scss, pages_scss
  ].flatten!
end
styles_scss() click to toggle source

Base scss file

@return [String]
# File lib/vueapp/core/builders/scss_builder.rb, line 54
def styles_scss
  src_path.join('styles.scss').to_s
end