vite_ruby 3.8.2 → 4.0.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -382
- data/README.md +1 -1
- data/default.vite.json +2 -7
- data/exe/vite +0 -2
- data/lib/tasks/vite.rake +12 -49
- data/lib/vite_ruby/build.rb +16 -46
- data/lib/vite_ruby/builder.rb +26 -21
- data/lib/vite_ruby/cli/build.rb +0 -2
- data/lib/vite_ruby/cli/install.rb +19 -24
- data/lib/vite_ruby/cli/upgrade_packages.rb +2 -1
- data/lib/vite_ruby/cli/vite.rb +4 -19
- data/lib/vite_ruby/cli.rb +0 -13
- data/lib/vite_ruby/commands.rb +61 -16
- data/lib/vite_ruby/compatibility_check.rb +1 -1
- data/lib/vite_ruby/config.rb +12 -45
- data/lib/vite_ruby/dev_server_proxy.rb +5 -10
- data/lib/vite_ruby/io.rb +1 -1
- data/lib/vite_ruby/manifest.rb +17 -29
- data/lib/vite_ruby/missing_entrypoint_error.rb +13 -21
- data/lib/vite_ruby/runner.rb +10 -18
- data/lib/vite_ruby/version.rb +3 -3
- data/lib/vite_ruby.rb +11 -26
- metadata +12 -19
- data/lib/vite_ruby/cli/ssr.rb +0 -27
| @@ -5,39 +5,31 @@ | |
| 5 5 | 
             
            # NOTE: The complexity here is justified by the improved usability of providing
         | 
| 6 6 | 
             
            # a more specific error message depending on the situation.
         | 
| 7 7 | 
             
            class ViteRuby::MissingEntrypointError < ViteRuby::Error
         | 
| 8 | 
            -
               | 
| 8 | 
            +
              extend Forwardable
         | 
| 9 | 
            +
              def_delegators :@info, :file_name, :last_build, :manifest, :config
         | 
| 9 10 |  | 
| 10 | 
            -
              def initialize( | 
| 11 | 
            -
                @ | 
| 11 | 
            +
              def initialize(info)
         | 
| 12 | 
            +
                @info = info
         | 
| 12 13 | 
             
                super <<~MSG
         | 
| 13 | 
            -
                  Vite Ruby can't find #{ file_name } in  | 
| 14 | 
            +
                  Vite Ruby can't find #{ file_name } in #{ config.manifest_path.relative_path_from(config.root) } or #{ config.assets_manifest_path.relative_path_from(config.root) }.
         | 
| 14 15 |  | 
| 15 16 | 
             
                  Possible causes:
         | 
| 16 17 | 
             
                  #{ possible_causes(last_build) }
         | 
| 17 18 | 
             
                  :troubleshooting:
         | 
| 18 | 
            -
                  #{ " | 
| 19 | 
            -
                  #{ " | 
| 20 | 
            -
                  #{ "Last build in #{ config.mode } mode:\n#{ last_build.to_json }\n" if last_build.success }
         | 
| 19 | 
            +
                  #{ "\nContent in your manifests:\n#{ JSON.pretty_generate(manifest) }\n" if last_build.success }
         | 
| 20 | 
            +
                  #{ "Last build in #{ config.mode } mode:\n#{ last_build.to_json }\n" unless last_build.success.nil? }
         | 
| 21 21 | 
             
                MSG
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def possible_causes(last_build)
         | 
| 25 | 
            -
                if last_build.success == false
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    .sub(':mode:', config.mode)
         | 
| 28 | 
            -
                    .sub(':errors:', last_build.errors.to_s.gsub(/^(?!$)/, '  '))
         | 
| 29 | 
            -
                elsif config.auto_build
         | 
| 30 | 
            -
                  DEFAULT_CAUSES
         | 
| 31 | 
            -
                else
         | 
| 32 | 
            -
                  DEFAULT_CAUSES + NO_AUTO_BUILD_CAUSES
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
              end
         | 
| 25 | 
            +
                return FAILED_BUILD_CAUSES.sub(':mode:', config.mode) if last_build.success == false
         | 
| 26 | 
            +
                return DEFAULT_CAUSES if config.auto_build
         | 
| 35 27 |  | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 28 | 
            +
                DEFAULT_CAUSES + NO_AUTO_BUILD_CAUSES
         | 
| 29 | 
            +
              end
         | 
| 38 30 |  | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 31 | 
            +
              FAILED_BUILD_CAUSES = <<-MSG
         | 
| 32 | 
            +
              - The last build failed. Try running `bin/vite build --clear --mode=:mode:` manually and check for errors.
         | 
| 41 33 | 
             
              MSG
         | 
| 42 34 |  | 
| 43 35 | 
             
              DEFAULT_CAUSES = <<-MSG
         | 
    
        data/lib/vite_ruby/runner.rb
    CHANGED
    
    | @@ -8,7 +8,7 @@ class ViteRuby::Runner | |
| 8 8 |  | 
| 9 9 | 
             
              # Public: Executes Vite with the specified arguments.
         | 
| 10 10 | 
             
              def run(argv, exec: false)
         | 
| 11 | 
            -
                config. | 
| 11 | 
            +
                Dir.chdir(config.root) {
         | 
| 12 12 | 
             
                  cmd = command_for(argv)
         | 
| 13 13 | 
             
                  return Kernel.exec(*cmd) if exec
         | 
| 14 14 |  | 
| @@ -23,31 +23,23 @@ private | |
| 23 23 |  | 
| 24 24 | 
             
              extend Forwardable
         | 
| 25 25 |  | 
| 26 | 
            -
              def_delegators :@vite_ruby, :config, :logger | 
| 26 | 
            +
              def_delegators :@vite_ruby, :config, :logger
         | 
| 27 27 |  | 
| 28 28 | 
             
              # Internal: Returns an Array with the command to run.
         | 
| 29 29 | 
             
              def command_for(args)
         | 
| 30 | 
            -
                [config.to_env | 
| 31 | 
            -
                   | 
| 32 | 
            -
                  cmd.push( | 
| 33 | 
            -
                  cmd.push( | 
| 30 | 
            +
                [config.to_env].tap do |cmd|
         | 
| 31 | 
            +
                  args = args.clone
         | 
| 32 | 
            +
                  cmd.push('node', '--inspect-brk') if args.delete('--inspect')
         | 
| 33 | 
            +
                  cmd.push('node', '--trace-deprecation') if args.delete('--trace_deprecation')
         | 
| 34 | 
            +
                  cmd.push(vite_executable)
         | 
| 35 | 
            +
                  cmd.push(*args)
         | 
| 34 36 | 
             
                  cmd.push('--mode', config.mode) unless args.include?('--mode') || args.include?('-m')
         | 
| 35 37 | 
             
                end
         | 
| 36 38 | 
             
              end
         | 
| 37 39 |  | 
| 38 40 | 
             
              # Internal: Resolves to an executable for Vite.
         | 
| 39 | 
            -
              def vite_executable | 
| 41 | 
            +
              def vite_executable
         | 
| 40 42 | 
             
                bin_path = config.vite_bin_path
         | 
| 41 | 
            -
                 | 
| 42 | 
            -
             | 
| 43 | 
            -
                x = case config.package_manager
         | 
| 44 | 
            -
                when 'npm' then %w[npx]
         | 
| 45 | 
            -
                when 'pnpm' then %w[pnpm exec]
         | 
| 46 | 
            -
                when 'bun' then %w[bun x --bun]
         | 
| 47 | 
            -
                when 'yarn' then %w[yarn]
         | 
| 48 | 
            -
                else raise ArgumentError, "Unknown package manager #{ config.package_manager.inspect }"
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                [*x, *exec_args, 'vite']
         | 
| 43 | 
            +
                File.exist?(bin_path) ? bin_path : "#{ `npm bin`.chomp }/vite"
         | 
| 52 44 | 
             
              end
         | 
| 53 45 | 
             
            end
         | 
    
        data/lib/vite_ruby/version.rb
    CHANGED
    
    | @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            class ViteRuby
         | 
| 4 | 
            -
              VERSION = ' | 
| 4 | 
            +
              VERSION = '4.0.0.alpha1'
         | 
| 5 5 |  | 
| 6 6 | 
             
              # Internal: Versions used by default when running `vite install`.
         | 
| 7 | 
            -
              DEFAULT_VITE_VERSION = '^ | 
| 8 | 
            -
              DEFAULT_PLUGIN_VERSION = '^ | 
| 7 | 
            +
              DEFAULT_VITE_VERSION = '^2.7.7'
         | 
| 8 | 
            +
              DEFAULT_PLUGIN_VERSION = '^3.0.5'
         | 
| 9 9 | 
             
            end
         | 
    
        data/lib/vite_ruby.rb
    CHANGED
    
    | @@ -11,10 +11,11 @@ loader.ignore("#{ __dir__ }/install") | |
| 11 11 | 
             
            loader.ignore("#{ __dir__ }/tasks")
         | 
| 12 12 | 
             
            loader.ignore("#{ __dir__ }/exe")
         | 
| 13 13 | 
             
            loader.inflector.inflect('cli' => 'CLI')
         | 
| 14 | 
            -
            loader.inflector.inflect('ssr' => 'SSR')
         | 
| 15 14 | 
             
            loader.inflector.inflect('io' => 'IO')
         | 
| 16 15 | 
             
            loader.setup
         | 
| 17 16 |  | 
| 17 | 
            +
            require 'vite_ruby/version'
         | 
| 18 | 
            +
             | 
| 18 19 | 
             
            class ViteRuby
         | 
| 19 20 | 
             
              # Internal: Prefix used for environment variables that modify the configuration.
         | 
| 20 21 | 
             
              ENV_PREFIX = 'VITE_RUBY'
         | 
| @@ -32,7 +33,7 @@ class ViteRuby | |
| 32 33 | 
             
              class << self
         | 
| 33 34 | 
             
                extend Forwardable
         | 
| 34 35 |  | 
| 35 | 
            -
                def_delegators :instance, :config, : | 
| 36 | 
            +
                def_delegators :instance, :config, :commands, :env, :run, :run_proxy?
         | 
| 36 37 | 
             
                def_delegators :config, :mode
         | 
| 37 38 |  | 
| 38 39 | 
             
                def instance
         | 
| @@ -75,26 +76,17 @@ class ViteRuby | |
| 75 76 | 
             
                @logger ||= Logger.new($stdout)
         | 
| 76 77 | 
             
              end
         | 
| 77 78 |  | 
| 78 | 
            -
              # Public: Returns a digest of all the watched files, allowing to detect
         | 
| 79 | 
            -
              # changes. Useful to perform version checks in single-page applications.
         | 
| 80 | 
            -
              def digest
         | 
| 81 | 
            -
                builder.send(:watched_files_digest)
         | 
| 82 | 
            -
              end
         | 
| 83 | 
            -
             | 
| 84 79 | 
             
              # Public: Returns true if the Vite development server is currently running.
         | 
| 85 80 | 
             
              # NOTE: Checks only once every second since every lookup calls this method.
         | 
| 86 81 | 
             
              def dev_server_running?
         | 
| 87 82 | 
             
                return false unless run_proxy?
         | 
| 88 | 
            -
                return  | 
| 89 | 
            -
             | 
| 90 | 
            -
                 | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
                ensure
         | 
| 96 | 
            -
                  @running_checked_at = Time.now
         | 
| 97 | 
            -
                end
         | 
| 83 | 
            +
                return true if defined?(@running_at) && @running_at && Time.now - @running_at < 1
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                Socket.tcp(config.host, config.port, connect_timeout: config.dev_server_connect_timeout).close
         | 
| 86 | 
            +
                @running_at = Time.now
         | 
| 87 | 
            +
                true
         | 
| 88 | 
            +
              rescue StandardError
         | 
| 89 | 
            +
                @running_at = false
         | 
| 98 90 | 
             
              end
         | 
| 99 91 |  | 
| 100 92 | 
             
              # Public: Additional environment variables to pass to Vite.
         | 
| @@ -131,22 +123,15 @@ class ViteRuby | |
| 131 123 | 
             
              # Public: Current instance configuration for Vite.
         | 
| 132 124 | 
             
              def config
         | 
| 133 125 | 
             
                unless defined?(@config)
         | 
| 134 | 
            -
                   | 
| 126 | 
            +
                  @config = ViteRuby::Config.resolve_config(**@config_options)
         | 
| 135 127 | 
             
                  @config.load_ruby_config
         | 
| 136 128 | 
             
                end
         | 
| 137 129 |  | 
| 138 130 | 
             
                @config
         | 
| 139 131 | 
             
              end
         | 
| 140 132 |  | 
| 141 | 
            -
              # Public: Allows overriding the configuration for this instance.
         | 
| 142 | 
            -
              def configure(**options)
         | 
| 143 | 
            -
                @config = ViteRuby::Config.resolve_config(**@config_options, **options)
         | 
| 144 | 
            -
              end
         | 
| 145 | 
            -
             | 
| 146 133 | 
             
              # Public: Enables looking up assets managed by Vite using name and type.
         | 
| 147 134 | 
             
              def manifest
         | 
| 148 135 | 
             
                @manifest ||= ViteRuby::Manifest.new(self)
         | 
| 149 136 | 
             
              end
         | 
| 150 137 | 
             
            end
         | 
| 151 | 
            -
             | 
| 152 | 
            -
            require 'vite_ruby/version'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,35 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vite_ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 4.0.0.alpha1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Máximo Mussini
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-01-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: dry-cli
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - " | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0.7'
         | 
| 20 | 
            -
                - - "<"
         | 
| 17 | 
            +
                - - "~>"
         | 
| 21 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 0.7.0
         | 
| 23 20 | 
             
              type: :runtime
         | 
| 24 21 | 
             
              prerelease: false
         | 
| 25 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 23 | 
             
                requirements:
         | 
| 27 | 
            -
                - - " | 
| 28 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version: '0.7'
         | 
| 30 | 
            -
                - - "<"
         | 
| 24 | 
            +
                - - "~>"
         | 
| 31 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 0.7.0
         | 
| 33 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 28 | 
             
              name: rack-proxy
         | 
| 35 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -185,7 +179,6 @@ files: | |
| 185 179 | 
             
            - lib/vite_ruby/cli/dev.rb
         | 
| 186 180 | 
             
            - lib/vite_ruby/cli/file_utils.rb
         | 
| 187 181 | 
             
            - lib/vite_ruby/cli/install.rb
         | 
| 188 | 
            -
            - lib/vite_ruby/cli/ssr.rb
         | 
| 189 182 | 
             
            - lib/vite_ruby/cli/upgrade.rb
         | 
| 190 183 | 
             
            - lib/vite_ruby/cli/upgrade_packages.rb
         | 
| 191 184 | 
             
            - lib/vite_ruby/cli/version.rb
         | 
| @@ -208,8 +201,8 @@ homepage: https://github.com/ElMassimo/vite_ruby | |
| 208 201 | 
             
            licenses:
         | 
| 209 202 | 
             
            - MIT
         | 
| 210 203 | 
             
            metadata:
         | 
| 211 | 
            -
              source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_ruby@ | 
| 212 | 
            -
              changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_ruby@ | 
| 204 | 
            +
              source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_ruby@4.0.0.alpha1/vite_ruby
         | 
| 205 | 
            +
              changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_ruby@4.0.0.alpha1/vite_ruby/CHANGELOG.md
         | 
| 213 206 | 
             
            post_install_message: "Thanks for installing Vite Ruby!\n\nIf you upgraded the gem
         | 
| 214 207 | 
             
              manually, please run:\n\tbundle exec vite upgrade"
         | 
| 215 208 | 
             
            rdoc_options: []
         | 
| @@ -219,14 +212,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 219 212 | 
             
              requirements:
         | 
| 220 213 | 
             
              - - ">="
         | 
| 221 214 | 
             
                - !ruby/object:Gem::Version
         | 
| 222 | 
            -
                  version: '2. | 
| 215 | 
            +
                  version: '2.4'
         | 
| 223 216 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 224 217 | 
             
              requirements:
         | 
| 225 | 
            -
              - - " | 
| 218 | 
            +
              - - ">"
         | 
| 226 219 | 
             
                - !ruby/object:Gem::Version
         | 
| 227 | 
            -
                  version:  | 
| 220 | 
            +
                  version: 1.3.1
         | 
| 228 221 | 
             
            requirements: []
         | 
| 229 | 
            -
            rubygems_version: 3. | 
| 222 | 
            +
            rubygems_version: 3.2.32
         | 
| 230 223 | 
             
            signing_key:
         | 
| 231 224 | 
             
            specification_version: 4
         | 
| 232 225 | 
             
            summary: Use Vite in Ruby and bring joy to your JavaScript experience
         | 
    
        data/lib/vite_ruby/cli/ssr.rb
    DELETED
    
    | @@ -1,27 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class ViteRuby::CLI::SSR < ViteRuby::CLI::Vite
         | 
| 4 | 
            -
              DEFAULT_ENV = CURRENT_ENV || 'production'
         | 
| 5 | 
            -
              JS_EXTENSIONS = %w[js mjs cjs]
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              desc 'Run the resulting app from building in SSR mode.'
         | 
| 8 | 
            -
              executable_options
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              def call(mode:, inspect: false, trace_deprecation: false)
         | 
| 11 | 
            -
                ViteRuby.env['VITE_RUBY_MODE'] = mode
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                ssr_entrypoint = JS_EXTENSIONS
         | 
| 14 | 
            -
                  .map { |ext| ViteRuby.config.ssr_output_dir.join("ssr.#{ ext }") }
         | 
| 15 | 
            -
                  .find(&:exist?)
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                raise ArgumentError, "No ssr entrypoint found `#{ ViteRuby.config.ssr_output_dir.relative_path_from(ViteRuby.config.root) }/ssr.{#{ JS_EXTENSIONS.join(',') }}`. Have you run bin/vite build --ssr?" unless ssr_entrypoint
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                cmd = [
         | 
| 20 | 
            -
                  'node',
         | 
| 21 | 
            -
                  ('--inspect-brk' if inspect),
         | 
| 22 | 
            -
                  ('--trace-deprecation' if trace_deprecation),
         | 
| 23 | 
            -
                  ssr_entrypoint,
         | 
| 24 | 
            -
                ]
         | 
| 25 | 
            -
                Kernel.exec(*cmd.compact.map(&:to_s))
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
            end
         |