Skip to content

Commit 0bd2a3a

Browse files
justin808claude
andcommitted
Fix webpack-assets-manifest version for minimum Shakapacker compatibility
Shakapacker 8.2.0 requires webpack-assets-manifest ^5.x, but the generator creates apps with ^6.x. The apply_minimum_versions function now also downgrades webpack-assets-manifest to be compatible with Shakapacker 8.2.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent dbc7a32 commit 0bd2a3a

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

react_on_rails/rakelib/shakapacker_examples.rake

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ namespace :shakapacker_examples do # rubocop:disable Metrics/BlockLength
1717
include ReactOnRails::TaskHelpers
1818

1919
# Updates package.json to use minimum supported versions for compatibility testing
20-
def apply_minimum_versions(dir) # rubocop:disable Metrics/CyclomaticComplexity
20+
# rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
21+
def apply_minimum_versions(dir)
2122
package_json_path = File.join(dir, "package.json")
2223
return unless File.exist?(package_json_path)
2324

@@ -28,24 +29,33 @@ namespace :shakapacker_examples do # rubocop:disable Metrics/BlockLength
2829
raise
2930
end
3031

32+
deps = package_json["dependencies"]
33+
dev_deps = package_json["devDependencies"]
34+
3135
# Update React versions to minimum supported
32-
if package_json["dependencies"]
33-
package_json["dependencies"]["react"] = ExampleType::MINIMUM_REACT_VERSION
34-
package_json["dependencies"]["react-dom"] = ExampleType::MINIMUM_REACT_VERSION
36+
if deps
37+
deps["react"] = ExampleType::MINIMUM_REACT_VERSION
38+
deps["react-dom"] = ExampleType::MINIMUM_REACT_VERSION
39+
# Shakapacker 8.2.0 requires webpack-assets-manifest ^5.x
40+
deps["webpack-assets-manifest"] = "^5.0.6" if deps.key?("webpack-assets-manifest")
3541
end
3642

43+
# Shakapacker 8.2.0 requires webpack-assets-manifest ^5.x (check devDependencies too)
44+
dev_deps["webpack-assets-manifest"] = "^5.0.6" if dev_deps&.key?("webpack-assets-manifest")
45+
3746
# Update Shakapacker to minimum supported version
38-
if package_json["devDependencies"]&.key?("shakapacker")
39-
package_json["devDependencies"]["shakapacker"] = ExampleType::MINIMUM_SHAKAPACKER_VERSION
40-
elsif package_json["dependencies"]&.key?("shakapacker")
41-
package_json["dependencies"]["shakapacker"] = ExampleType::MINIMUM_SHAKAPACKER_VERSION
47+
if dev_deps&.key?("shakapacker")
48+
dev_deps["shakapacker"] = ExampleType::MINIMUM_SHAKAPACKER_VERSION
49+
elsif deps&.key?("shakapacker")
50+
deps["shakapacker"] = ExampleType::MINIMUM_SHAKAPACKER_VERSION
4251
end
4352

4453
File.write(package_json_path, "#{JSON.pretty_generate(package_json)}\n")
4554
puts " Updated package.json with minimum versions:"
4655
puts " React: #{ExampleType::MINIMUM_REACT_VERSION}"
4756
puts " Shakapacker: #{ExampleType::MINIMUM_SHAKAPACKER_VERSION}"
4857
end
58+
# rubocop:enable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
4959

5060
# Define tasks for each example type
5161
ExampleType.all[:shakapacker_examples].each do |example_type|

0 commit comments

Comments
 (0)