vite_rails 1.0.10 → 1.0.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de1ef14e664eb5f06527b1126e5508598d50289c855edbf27d6e373f6ba805e1
4
- data.tar.gz: 6754500ef38d0dcaba0e7d89de42da5b6f51fff79e215d9a4b02f116a332e13d
3
+ metadata.gz: 9c6ae06bd2fe02d39882813646c291aa1984bf6f4bfbd337859c8527f83cdd66
4
+ data.tar.gz: 932af2eeadf8830685a6f1d30431849b1e46227147f34a11b286824d3ce80cf7
5
5
  SHA512:
6
- metadata.gz: 3207af12e9a3304b12da3f549c4ae1fe2610bb9a5511f164040b8a7e82e2324b472ebbc90163142db6fa06a5752acac2f38fb0c6ecefed0690ae6f8c2981702f
7
- data.tar.gz: c84109e20d0ba02b594de5e99922abeee23cc69146b955816c29aed23a1b65cc1db7e6e39eae67458fb8ceb74b38784e22fad5ac98f6c209f5697e46e0bca9ac
6
+ metadata.gz: 67f388f8c74bd39ee14f9d8033941a7616400f9e725a1c2cec7f459f9faa06457dcb113648d9bdb672b5497093f3905bddc13928b834c91f43cef08a58de0e65
7
+ data.tar.gz: fba446503a41accc9bd4a769042858789615b2095171d6c138c0f2aaf0471ce741da98d9aa058fabc1ee92e2f667b8c19bcab48980ea4288d4b4400b53d94f15
@@ -1,3 +1,9 @@
1
+ ## Vite Rails 1.0.11 (2020-01-24)
2
+
3
+ - Fix bug in `assetHost` that caused `base` to be configured incorrectly.
4
+ - Allow installing `vite` and `vite-plugin-ruby` as devDependencies, and install them when precompiling assets.
5
+ - Move `base` to the configuration root after Vite's update in beta.38
6
+
1
7
  ## Vite Rails 1.0.10 (2020-01-23)
2
8
 
3
9
  - Use `path_to_asset` in `vite_asset_path` so that it's prefixed automatically
data/README.md CHANGED
@@ -1,5 +1,16 @@
1
1
  <h1 align="center">
2
- Vite ⚡️ Rails
2
+ <a href="https://vite-rails.netlify.app/">
3
+ <img src="https://raw.githubusercontent.com/ElMassimo/vite_rails/main/docs/public/logo.svg" width="120px"/>
4
+ </a>
5
+
6
+ <br>
7
+
8
+ <a href="https://vite-rails.netlify.app/">
9
+ Vite Rails
10
+ </a>
11
+
12
+ <br>
13
+
3
14
  <p align="center">
4
15
  <a href="https://github.com/ElMassimo/vite_rails/actions">
5
16
  <img alt="Build Status" src="https://github.com/ElMassimo/vite_rails/workflows/build/badge.svg"/>
@@ -6,6 +6,6 @@ export default defineConfig({
6
6
  RubyPlugin(),
7
7
  ],
8
8
  optimizeDeps: {
9
- exclude: [/webpack/, /vite-plugin-ruby/],
9
+ exclude: [/webpack/], // In case webpacker is installed (these deps won't be imported)
10
10
  },
11
11
  })
@@ -33,8 +33,8 @@ Dir.chdir(Rails.root) do
33
33
  vite_version = package_json.match(/"vite": "(.*)"/)[1]
34
34
  plugin_version = package_json.match(/"vite-plugin-ruby": "(.*)"/)[1]
35
35
 
36
- say 'Installing vite as direct dependencies'
37
- run "yarn add vite@#{ vite_version } vite-plugin-ruby@#{ plugin_version }"
36
+ say 'Installing vite as build dependencies'
37
+ run "yarn add -D vite@#{ vite_version } vite-plugin-ruby@#{ plugin_version }"
38
38
  end
39
39
 
40
40
  say 'Vite ⚡️ Rails successfully installed! 🎉', :green
@@ -3,14 +3,24 @@
3
3
  $stdout.sync = true
4
4
 
5
5
  def enhance_assets_precompile
6
+ # Before installing
7
+ ['yarn:install', 'webpacker:yarn_install'].each do |name|
8
+ Rake::Task[name].enhance([:'vite:set_node_env']) if Rake::Task.task_defined?(name)
9
+ end
10
+
11
+ # After precompiling
6
12
  Rake::Task['assets:precompile'].enhance do |task|
7
13
  prefix = task.name.split(/#|assets:precompile/).first
8
-
9
14
  Rake::Task["#{ prefix }vite:build"].invoke
10
15
  end
11
16
  end
12
17
 
13
18
  namespace :vite do
19
+ desc 'Fixes Rails management of node dev dependencies (build dependencies)'
20
+ task :set_node_env do
21
+ ENV['NODE_ENV'] = 'development'
22
+ end
23
+
14
24
  desc 'Compile JavaScript packs using vite for production with digests'
15
25
  task build: [:'vite:verify_install', :environment] do
16
26
  ViteRails.build_from_rake
@@ -1,19 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  namespace :vite do
4
- desc 'Support for older Rails versions. Install all JavaScript dependencies as specified via Yarn'
4
+ desc 'Install all JavaScript dependencies as specified via Yarn'
5
5
  task :install_dependencies do
6
6
  valid_node_envs = %w[test development production]
7
7
  node_env = ENV.fetch('NODE_ENV') { valid_node_envs.include?(Rails.env) ? Rails.env : 'production' }
8
8
  Dir.chdir(Rails.root) do
9
- install_command = if Rails.root.join('yarn.lock').exist?
10
- v1 = `yarn --version`.start_with?('1')
11
- "yarn install #{ v1 ? '--no-progress --frozen-lockfile' : '--immutable' }"
12
- elsif Rails.root.join('pnpm-lock.yaml').exist?
13
- 'pnpm install'
14
- else
15
- 'npm ci'
16
- end
9
+ v1 = `yarn --version`.start_with?('1')
10
+ install_command = "yarn install #{ v1 ? '--no-progress --frozen-lockfile' : '--immutable' } --production=false"
17
11
  system({ 'NODE_ENV' => node_env }, install_command)
18
12
  end
19
13
  end
@@ -14,7 +14,7 @@ class ViteRails
14
14
  ENV_PREFIX = 'VITE_RUBY'
15
15
 
16
16
  class << self
17
- delegate :config, :builder, :manifest, :commands, :dev_server, :dev_server_running?, to: :instance
17
+ delegate :config, :builder, :manifest, :commands, :dev_server, :dev_server_running?, :run_proxy?, to: :instance
18
18
  delegate :mode, to: :config
19
19
  delegate :bootstrap, :clean, :clean_from_rake, :clobber, :build, :build_from_rake, to: :commands
20
20
 
@@ -29,14 +29,6 @@ class ViteRails
29
29
  ViteRails::Runner.new(args).run
30
30
  end
31
31
 
32
- # Public: The proxy for assets should only run in development mode.
33
- def run_proxy?
34
- config.mode == 'development'
35
- rescue StandardError => error
36
- logger.error("Failed to check mode for Vite: #{ error.message }")
37
- false
38
- end
39
-
40
32
  # Internal: Allows to obtain any env variables for configuration options.
41
33
  def load_env_variables
42
34
  ENV.select { |key, _| key.start_with?(ENV_PREFIX) }
@@ -53,7 +45,15 @@ class ViteRails
53
45
 
54
46
  # Public: Returns true if the Vite development server is running.
55
47
  def dev_server_running?
56
- ViteRails.run_proxy? && dev_server.running?
48
+ run_proxy? && dev_server.running?
49
+ end
50
+
51
+ # Public: The proxy for assets should only run in development mode.
52
+ def run_proxy?
53
+ config.mode == 'development'
54
+ rescue StandardError => error
55
+ ViteRails.logger.error("Failed to check mode for Vite: #{ error.message }")
56
+ false
57
57
  end
58
58
 
59
59
  # Public: Current instance configuration for Vite.
@@ -55,7 +55,7 @@ private
55
55
  def coerce_values(config)
56
56
  config['mode'] = config['mode'].to_s
57
57
  config['port'] = config['port'].to_i
58
- coerce_paths(config, 'root', 'public_output_dir')
58
+ config['root'] = Pathname.new(config['root'])
59
59
  config['build_cache_dir'] = config['root'].join(config['build_cache_dir'])
60
60
  coerce_booleans(config, 'auto_build', 'hide_build_console_output', 'https')
61
61
  end
@@ -65,14 +65,9 @@ private
65
65
  names.each { |name| config[name] = [true, 'true'].include?(config[name]) }
66
66
  end
67
67
 
68
- # Internal: Converts configuration options to pathname.
69
- def coerce_paths(config, *names)
70
- names.each { |name| config[name] = Pathname.new(config[name]) unless config[name].nil? }
71
- end
72
-
73
68
  class << self
74
69
  # Public: Returns the project configuration for Vite.
75
- def resolve_config(attrs = {})
70
+ def resolve_config(**attrs)
76
71
  config = attrs.transform_keys(&:to_s).reverse_merge(config_defaults)
77
72
  file_path = File.join(config['root'], config['config_path'])
78
73
  file_config = config_from_file(file_path, mode: config['mode'])
@@ -11,7 +11,9 @@ module ViteRails::Helper
11
11
 
12
12
  # Public: Renders a script tag for vite/client to enable HMR in development.
13
13
  def vite_client_tag
14
- content_tag('script', '', src: '/@vite/client', type: 'module') if ViteRails.dev_server_running?
14
+ return unless current_vite_instance.dev_server_running?
15
+
16
+ content_tag('script', '', src: current_vite_instance.manifest.prefix_vite_asset('@vite/client'), type: 'module')
15
17
  end
16
18
 
17
19
  # Public: Resolves the path for the specified Vite asset.
@@ -33,12 +35,12 @@ module ViteRails::Helper
33
35
  js_entries = names.map { |name| current_vite_instance.manifest.lookup!(name, type: asset_type) }
34
36
  js_tags = javascript_include_tag(*js_entries.map { |entry| entry['file'] }, crossorigin: crossorigin, type: type, **options)
35
37
 
36
- unless skip_preload_tags || ViteRails.dev_server_running?
38
+ unless skip_preload_tags || current_vite_instance.dev_server_running?
37
39
  preload_paths = js_entries.flat_map { |entry| entry['imports'] }.compact.uniq
38
40
  preload_tags = preload_paths.map { |path| preload_link_tag(path, crossorigin: crossorigin) }
39
41
  end
40
42
 
41
- unless skip_style_tags || ViteRails.dev_server_running?
43
+ unless skip_style_tags || current_vite_instance.dev_server_running?
42
44
  style_paths = names.map { |name|
43
45
  current_vite_instance.manifest.lookup(name.delete_suffix('.js'), type: :stylesheet)&.fetch('file')
44
46
  }.compact
@@ -42,6 +42,11 @@ class ViteRails::Manifest
42
42
  @manifest = load_manifest
43
43
  end
44
44
 
45
+ # Public: Scopes an asset to the output folder in public, as a path.
46
+ def prefix_vite_asset(path)
47
+ File.join("/#{ config.public_output_dir }", path)
48
+ end
49
+
45
50
  private
46
51
 
47
52
  delegate :config, :builder, :dev_server_running?, to: :@vite_rails
@@ -55,7 +60,7 @@ private
55
60
  # Internal: Finds the specified entry in the manifest.
56
61
  def find_manifest_entry(name)
57
62
  if dev_server_running?
58
- { 'file' => "/#{ config.public_output_dir.join(name.to_s) }" }
63
+ { 'file' => prefix_vite_asset(name.to_s) }
59
64
  else
60
65
  manifest[name.to_s]
61
66
  end
@@ -80,8 +85,8 @@ private
80
85
  def load_manifest
81
86
  if config.manifest_path.exist?
82
87
  JSON.parse(config.manifest_path.read).each do |_, entry|
83
- entry['file'] = within_public_output_dir(entry['file'])
84
- entry['imports'] = entry['imports']&.map { |path| within_public_output_dir(path) }
88
+ entry['file'] = prefix_vite_asset(entry['file'])
89
+ entry['imports'] = entry['imports']&.map { |path| prefix_vite_asset(path) }
85
90
  end
86
91
  else
87
92
  {}
@@ -96,11 +101,6 @@ private
96
101
  extension ? "#{ name }.#{ extension }" : name
97
102
  end
98
103
 
99
- # Internal: Scopes the paths in the manifest to the output folder in public.
100
- def within_public_output_dir(path)
101
- "/#{ config.public_output_dir.join(path) }"
102
- end
103
-
104
104
  # Internal: Allows to receive :javascript and :stylesheet as :type in helpers.
105
105
  def extension_for_type(entry_type)
106
106
  case entry_type
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ViteRails
4
- VERSION = '1.0.10'
4
+ VERSION = '1.0.11'
5
5
  end
@@ -1,16 +1,19 @@
1
1
  {
2
2
  "name": "only-for-workflows",
3
3
  "version": "unknown",
4
+ "license": "MIT",
4
5
  "scripts": {
5
6
  "docs": "npm -C docs run docs",
6
7
  "docs:build": "npm -C docs run docs:build",
7
8
  "docs:search": "npm -C docs run docs:search",
8
9
  "docs:lint": "npm -C docs run lint",
10
+ "build": "rm -rf package/dist && npm -C package run prerelease",
11
+ "release": "rm -rf package/dist && npm -C package run release",
9
12
  "lint": "npm -C package run lint",
10
13
  "test": "npm -C package run test"
11
14
  },
12
15
  "dependencies": {
13
- "vite": "^2.0.0-beta.34",
14
- "vite-plugin-ruby": "^1.0.4"
16
+ "vite": "^2.0.0-beta.46",
17
+ "vite-plugin-ruby": "^1.0.5"
15
18
  }
16
19
  }
@@ -120,7 +120,7 @@ class ConfigTest < ViteRails::Test
120
120
  assert_equal 'config/vite_additional_paths.json', @config.config_path
121
121
  assert_pathname 'tmp/vitebuild', @config.build_cache_dir
122
122
  assert_equal 'pb', @config.public_dir
123
- assert_equal Pathname.new('ft'), @config.public_output_dir
123
+ assert_equal 'ft', @config.public_output_dir
124
124
  assert_pathname 'pb/ft', @config.build_output_dir
125
125
  assert_equal 'as', @config.assets_dir
126
126
  assert_equal 'app', @config.source_code_dir
@@ -11,6 +11,7 @@ class DevServerProxyTest < ViteRails::Test
11
11
  [200, { 'Content-Type' => 'application/json' }, env.to_json]
12
12
  })
13
13
  # Avoid actually using the proxy.
14
+ Rack::Proxy.remove_method(:perform_request)
14
15
  Rack::Proxy.define_method(:perform_request) { |env| capture_app.call(env) }
15
16
 
16
17
  ViteRails::DevServerProxy.new(capture_app)
@@ -38,13 +38,13 @@ class EngineRakeTasksTest < Minitest::Test
38
38
  within_mounted_app { `bundle exec rake app:vite:clobber` }
39
39
  refute app_public_dir.exist?
40
40
  rescue Minitest::Assertion => error
41
- raise error unless Rails.gem_version >= Gem::Version.new('6.1.0')
41
+ raise error, [error.message, @command_results.join("\n\n")].join("\n")
42
42
  end
43
43
 
44
44
  private
45
45
 
46
46
  def within_mounted_app
47
- Dir.chdir(mounted_app_path) { yield }
47
+ Dir.chdir(mounted_app_path) { yield }.tap { |result| @command_results << result }
48
48
  end
49
49
 
50
50
  def mounted_app_path
@@ -76,5 +76,6 @@ private
76
76
  vite_config_ts_path.delete if vite_config_ts_path.exist?
77
77
  app_frontend_dir.rmtree if app_frontend_dir.exist?
78
78
  app_public_dir.rmtree if app_public_dir.exist?
79
+ @command_results = []
79
80
  end
80
81
  end
@@ -22,7 +22,7 @@ class HelperTest < ActionView::TestCase
22
22
  def test_vite_client_tag
23
23
  assert_nil vite_client_tag
24
24
  with_dev_server_running {
25
- assert_equal '<script src="/@vite/client" type="module"></script>', vite_client_tag
25
+ assert_equal '<script src="/vite-production/@vite/client" type="module"></script>', vite_client_tag
26
26
  }
27
27
  end
28
28
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "private": true,
3
- "dependencies": {
4
- "vite": "^2.0.0-beta.34",
5
- "vite-plugin-ruby": "^1.0.2"
6
- },
7
- "license": "MIT"
3
+ "license": "MIT",
4
+ "devDependencies": {
5
+ "vite": "^2.0.0-beta.46",
6
+ "vite-plugin-ruby": "^1.0.5"
7
+ }
8
8
  }
@@ -35,7 +35,7 @@ colorette@^1.2.1:
35
35
  resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
36
36
  integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
37
37
 
38
- esbuild@^0.8.26:
38
+ esbuild@^0.8.34:
39
39
  version "0.8.34"
40
40
  resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.34.tgz#16b4ac58f74c821d2c5a8c2f0585ca96a38ab4e6"
41
41
  integrity sha512-tnr0V1ooakYr1aRLXQLzCn2GVG1kBTW3FWpRyC+NgrR3ntsouVpJOlTOV0BS4YLATx3/c+x3h/uBq9lWJlUAtQ==
@@ -188,19 +188,19 @@ to-regex-range@^5.0.1:
188
188
  dependencies:
189
189
  is-number "^7.0.0"
190
190
 
191
- vite-plugin-ruby@^1.0.2:
192
- version "1.0.2"
193
- resolved "https://registry.yarnpkg.com/vite-plugin-ruby/-/vite-plugin-ruby-1.0.2.tgz#9c193982c912b6399d9b269136e533201b445fb1"
194
- integrity sha512-m+CIyHiZElaW4TpdtyVQXnvLbz5ovYSwo5bTgr/ODLPMgmAqTaZu9GImPkIMZwp8PmBWnHT8h6vUtnIq0yFLOg==
191
+ vite-plugin-ruby@^1.0.4:
192
+ version "1.0.4"
193
+ resolved "https://registry.yarnpkg.com/vite-plugin-ruby/-/vite-plugin-ruby-1.0.4.tgz#0f4a263fd79a082a84917a54b0881f02a3bbfa61"
194
+ integrity sha512-WJE+c2TGLwcbSHzkqcwCmPcHxasUnXmx5Bi1HPO89Yo+Mggi8t/fO/WIPUF7NxSlp9q2lq5/L3Vnkt3R/tolPg==
195
195
  dependencies:
196
196
  fast-glob "^3.2.4"
197
197
 
198
- vite@^2.0.0-beta.34:
199
- version "2.0.0-beta.36"
200
- resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.0-beta.36.tgz#ccecac854ded0b7c0fe14c52c0460e1c23a9c70b"
201
- integrity sha512-+Q/Twq1/tpNQIZl0HSFTqiEuP7lXj+6H/f9q63+s5I2K/sqgSUajL3PL7W9uUUIv9dYpJ1eLqkO42ppH9w9Ldw==
198
+ vite@^2.0.0-beta.46:
199
+ version "2.0.0-beta.46"
200
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.0-beta.46.tgz#9c0d35019c350fbebd17f84c4e7243fffccd1819"
201
+ integrity sha512-RiiJdjiFDaM9youfcTFnCztstwBXHHSdsSATZVD5A4QSb39KJRTpSKoveFo0PT7VJM5HjOP7QC/sVOqX011F6Q==
202
202
  dependencies:
203
- esbuild "^0.8.26"
203
+ esbuild "^0.8.34"
204
204
  postcss "^8.2.1"
205
205
  resolve "^1.19.0"
206
206
  rollup "^2.35.1"
@@ -38,8 +38,8 @@ class RakeTasksTest < Minitest::Test
38
38
  end
39
39
  end
40
40
 
41
- refute_includes installed_node_module_names, 'right-pad',
42
- 'Expected only production dependencies to be installed'
41
+ assert_includes installed_node_module_names, 'right-pad',
42
+ 'Expected development dependencies to be installed as well'
43
43
  end
44
44
 
45
45
  private
@@ -53,7 +53,7 @@ private
53
53
  klass = ViteRails::Runner
54
54
  instance = klass.new(argv)
55
55
  mock = Minitest::Mock.new
56
- mock.expect(:call, nil, [ViteRails.env, *command, *argv, *flags])
56
+ mock.expect(:call, nil, [ViteRails.config.to_env, *command, *argv, *flags])
57
57
 
58
58
  klass.stub(:new, instance) do
59
59
  instance.stub(:executable_exists?, !use_yarn) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vite_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Máximo Mussini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-23 00:00:00.000000000 Z
11
+ date: 2021-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -185,8 +185,8 @@ homepage: https://github.com/ElMassimo/vite_rails
185
185
  licenses:
186
186
  - MIT
187
187
  metadata:
188
- source_code_uri: https://github.com/ElMassimo/vite_rails/tree/v1.0.10
189
- changelog_uri: https://github.com/ElMassimo/vite_rails/blob/v1.0.10/CHANGELOG.md
188
+ source_code_uri: https://github.com/ElMassimo/vite_rails/tree/v1.0.11
189
+ changelog_uri: https://github.com/ElMassimo/vite_rails/blob/v1.0.11/CHANGELOG.md
190
190
  post_install_message:
191
191
  rdoc_options: []
192
192
  require_paths: