class VueCommand

Constants

SASS
SUPPORED_FORMATS

Public Class Methods

new() click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 15
def initialize
  @pm = VueCli::Rails::Configuration.instance.node_env
end

Public Instance Methods

install_format_support(formats) click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 19
def install_format_support(formats)
  pkgs, unknown = group_formats(formats)
  if pkgs.empty?
    msg = unknown.empty? ? 'No formats supplied' : "Unsupported formats #{unknown}"
    raise(ArgumentError, msg)
  end

  STDERR.puts "Unsupported formats #{unknown}" if unknown.any?
  @pm.add("-D #{pkgs.join(' ')}")
end
install_node_dev() click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 30
def install_node_dev
  pack_json = ::Rails.root.join('package.json')
  abort('Not found package.json!') unless pack_json.exist? && pack_json.file?

  add_deps(pack_json, %w[cross-env npm-run-all])
  add_scripts(pack_json,
    dev: 'run-p rails-s serve',
    prod: 'cross-env RAILS_ENV=production vue-cli-service build',
    serve: 'vue-cli-service serve',
    'rails-s' => 'cross-env NO_WEBPACK_DEV_SERVER=1 rails s')
  puts 'Dependencies and scripts have been installed successfully'
  cmd = @pm.package_manager == :npm ? 'npm run' : 'yarn'
  puts "  Please use `#{cmd} dev` to start dev server"
end

Private Instance Methods

add_deps(package_json, *packages, dev: true) click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 47
def add_deps(package_json, *packages, dev: true)
  json = JSON.parse(package_json.read)
  deps = json[dev ? 'devDependencies' : 'dependencies']
  pkgs = [packages].flatten.find_all do |dep|
    !(dep.blank? || deps.key?(dep))
  end
  @pm.add("#{dev ? '-D ' : ''}#{pkgs.join(' ')}") if pkgs.any?
end
add_scripts(package_json, commands = {}) click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 56
def add_scripts(package_json, commands = {})
  json = JSON.parse(package_json.read)
  scripts = json['scripts']
  commands.stringify_keys.each do |key, cmd|
    scripts[key] = cmd unless scripts.key?(key)
  end
  package_json.write(JSON.pretty_generate(json))
end
group_formats(formats) click to toggle source
# File lib/helpers/scripts/vue_command.rb, line 65
def group_formats(formats)
  formats.each_with_object([[], []]) do |fmt, result|
    fmts = SUPPORED_FORMATS[fmt.downcase]
    if fmts
      result[0] += fmts
    else
      result[1] << fmt
    end
  end
end