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