shakapacker 9.2.0 → 9.3.0.beta.1

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.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +6 -9
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +6 -8
  4. data/.github/workflows/claude-code-review.yml +4 -5
  5. data/.github/workflows/claude.yml +1 -2
  6. data/.github/workflows/dummy.yml +4 -4
  7. data/.github/workflows/generator.yml +9 -9
  8. data/.github/workflows/node.yml +11 -2
  9. data/.github/workflows/ruby.yml +16 -16
  10. data/.github/workflows/test-bundlers.yml +9 -9
  11. data/.gitignore +4 -0
  12. data/CHANGELOG.md +74 -5
  13. data/CLAUDE.md +6 -1
  14. data/CONTRIBUTING.md +0 -1
  15. data/Gemfile.lock +1 -1
  16. data/README.md +14 -14
  17. data/TODO.md +10 -2
  18. data/TODO_v9.md +13 -3
  19. data/bin/export-bundler-config +1 -1
  20. data/conductor-setup.sh +1 -1
  21. data/conductor.json +1 -1
  22. data/docs/cdn_setup.md +13 -8
  23. data/docs/common-upgrades.md +2 -1
  24. data/docs/configuration.md +630 -0
  25. data/docs/css-modules-export-mode.md +120 -100
  26. data/docs/customizing_babel_config.md +16 -16
  27. data/docs/deployment.md +18 -0
  28. data/docs/developing_shakapacker.md +6 -0
  29. data/docs/optional-peer-dependencies.md +9 -4
  30. data/docs/peer-dependencies.md +17 -6
  31. data/docs/precompile_hook.md +342 -0
  32. data/docs/react.md +57 -47
  33. data/docs/releasing.md +0 -2
  34. data/docs/rspack.md +25 -21
  35. data/docs/rspack_migration_guide.md +335 -8
  36. data/docs/sprockets.md +1 -0
  37. data/docs/style_loader_vs_mini_css.md +12 -12
  38. data/docs/subresource_integrity.md +13 -7
  39. data/docs/transpiler-performance.md +40 -19
  40. data/docs/troubleshooting.md +141 -3
  41. data/docs/typescript-migration.md +48 -39
  42. data/docs/typescript.md +12 -8
  43. data/docs/using_esbuild_loader.md +10 -10
  44. data/docs/v6_upgrade.md +33 -20
  45. data/docs/v7_upgrade.md +8 -6
  46. data/docs/v8_upgrade.md +13 -12
  47. data/docs/v9_upgrade.md +2 -1
  48. data/eslint.config.fast.js +134 -0
  49. data/eslint.config.js +140 -0
  50. data/jest.config.js +8 -1
  51. data/knip.ts +54 -0
  52. data/lib/install/bin/export-bundler-config +1 -1
  53. data/lib/install/config/shakapacker.yml +16 -5
  54. data/lib/shakapacker/compiler.rb +80 -0
  55. data/lib/shakapacker/configuration.rb +33 -5
  56. data/lib/shakapacker/dev_server_runner.rb +140 -1
  57. data/lib/shakapacker/doctor.rb +294 -65
  58. data/lib/shakapacker/instance.rb +8 -3
  59. data/lib/shakapacker/runner.rb +244 -8
  60. data/lib/shakapacker/version.rb +1 -1
  61. data/lib/tasks/shakapacker/doctor.rake +42 -2
  62. data/package/babel/preset.ts +7 -4
  63. data/package/config.ts +42 -30
  64. data/package/configExporter/buildValidator.ts +883 -0
  65. data/package/configExporter/cli.ts +972 -210
  66. data/package/configExporter/configFile.ts +520 -0
  67. data/package/configExporter/fileWriter.ts +12 -8
  68. data/package/configExporter/index.ts +11 -1
  69. data/package/configExporter/types.ts +54 -2
  70. data/package/configExporter/yamlSerializer.ts +22 -8
  71. data/package/dev_server.ts +1 -1
  72. data/package/environments/__type-tests__/rspack-plugin-compatibility.ts +11 -5
  73. data/package/environments/base.ts +18 -13
  74. data/package/environments/development.ts +1 -1
  75. data/package/environments/production.ts +4 -1
  76. data/package/index.d.ts +50 -3
  77. data/package/index.d.ts.template +50 -0
  78. data/package/index.ts +7 -7
  79. data/package/loaders.d.ts +2 -2
  80. data/package/optimization/rspack.ts +1 -1
  81. data/package/plugins/rspack.ts +15 -4
  82. data/package/plugins/webpack.ts +7 -3
  83. data/package/rspack/index.ts +10 -2
  84. data/package/rules/raw.ts +3 -2
  85. data/package/rules/sass.ts +1 -1
  86. data/package/types/README.md +15 -13
  87. data/package/types/index.ts +5 -5
  88. data/package/types.ts +0 -1
  89. data/package/utils/defaultConfigPath.ts +4 -1
  90. data/package/utils/errorCodes.ts +129 -100
  91. data/package/utils/errorHelpers.ts +34 -29
  92. data/package/utils/getStyleRule.ts +5 -2
  93. data/package/utils/helpers.ts +21 -11
  94. data/package/utils/pathValidation.ts +43 -35
  95. data/package/utils/requireOrError.ts +1 -1
  96. data/package/utils/snakeToCamelCase.ts +1 -1
  97. data/package/utils/typeGuards.ts +132 -83
  98. data/package/utils/validateDependencies.ts +1 -1
  99. data/package/webpack-types.d.ts +3 -3
  100. data/package/webpackDevServerConfig.ts +22 -10
  101. data/package-lock.json +2 -2
  102. data/package.json +25 -16
  103. data/scripts/type-check-no-emit.js +1 -1
  104. data/test/configExporter/buildValidator.test.js +1292 -0
  105. data/test/configExporter/configFile.test.js +392 -0
  106. data/test/configExporter/integration.test.js +275 -0
  107. data/test/helpers.js +1 -1
  108. data/test/package/configExporter.test.js +154 -0
  109. data/test/package/environments/base.test.js +6 -3
  110. data/test/package/helpers.test.js +2 -2
  111. data/test/package/rules/babel.test.js +61 -51
  112. data/test/package/rules/esbuild.test.js +12 -3
  113. data/test/package/rules/file.test.js +3 -1
  114. data/test/package/rules/sass-version-parsing.test.js +71 -0
  115. data/test/package/rules/sass.test.js +11 -6
  116. data/test/package/rules/sass1.test.js +4 -5
  117. data/test/package/rules/sass16.test.js +24 -0
  118. data/test/package/rules/swc.test.js +48 -38
  119. data/tools/README.md +15 -5
  120. data/tsconfig.eslint.json +2 -9
  121. data/yarn.lock +1954 -1493
  122. metadata +22 -3
  123. data/.eslintignore +0 -5
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "shakapacker",
3
- "version": "9.2.0",
3
+ "version": "9.3.0-beta.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "shakapacker",
9
- "version": "9.2.0",
9
+ "version": "9.3.0-beta.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "js-yaml": "^4.1.0",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shakapacker",
3
- "version": "9.2.0",
3
+ "version": "9.3.0-beta.1",
4
4
  "description": "Use webpack to manage app-like JavaScript modules in Rails",
5
5
  "homepage": "https://github.com/shakacode/shakapacker",
6
6
  "bugs": {
@@ -32,10 +32,12 @@
32
32
  ],
33
33
  "scripts": {
34
34
  "clean:ts": "find package -name '*.ts' -not -name '*.d.ts' | sed 's/\\.ts$//' | xargs -I {} rm -f {}.js {}.d.ts {}.d.ts.map {}.js.map",
35
- "build": "tsc && node scripts/remove-use-strict.js && yarn prettier --write 'package/**/*.js'",
35
+ "build": "tsc && cp package/index.d.ts.template package/index.d.ts && node scripts/remove-use-strict.js && yarn prettier --write 'package/**/*.js'",
36
36
  "build:types": "tsc",
37
- "lint": "eslint .",
38
- "lint:fast": "eslint . --ext .js,.jsx,.ts,.tsx --config .eslintrc.fast.js",
37
+ "knip": "knip",
38
+ "knip:production": "knip --production",
39
+ "lint": "eslint . --cache",
40
+ "lint:fast": "eslint . --config eslint.config.fast.js --cache",
39
41
  "test": "jest",
40
42
  "type-check": "tsc --noEmit",
41
43
  "prepublishOnly": "yarn build && yarn type-check"
@@ -43,11 +45,14 @@
43
45
  "dependencies": {
44
46
  "js-yaml": "^4.1.0",
45
47
  "path-complete-extname": "^1.0.0",
46
- "webpack-merge": "^5.8.0"
48
+ "webpack-merge": "^5.8.0",
49
+ "yargs": "^17.7.2"
47
50
  },
48
51
  "devDependencies": {
49
- "@rspack/cli": "^1.4.11",
50
- "@rspack/core": "^1.4.11",
52
+ "@eslint/eslintrc": "^3.2.0",
53
+ "@eslint/js": "^9.37.0",
54
+ "@rspack/cli": "^1.5.8",
55
+ "@rspack/core": "^1.5.8",
51
56
  "@swc/core": "^1.3.0",
52
57
  "@types/babel__core": "^7.20.5",
53
58
  "@types/js-yaml": "^4.0.9",
@@ -56,23 +61,25 @@
56
61
  "@types/webpack": "^5.28.5",
57
62
  "@types/webpack-dev-server": "^4.7.2",
58
63
  "@types/webpack-merge": "^5.0.0",
59
- "@typescript-eslint/eslint-plugin": "^8.45.0",
60
- "@typescript-eslint/parser": "^8.45.0",
64
+ "@types/yargs": "^17.0.33",
65
+ "@typescript-eslint/eslint-plugin": "^8.46.0",
66
+ "@typescript-eslint/parser": "^8.46.0",
61
67
  "babel-loader": "^8.2.4",
62
68
  "compression-webpack-plugin": "^9.0.0",
63
69
  "css-loader": "^7.1.2",
64
70
  "esbuild-loader": "^2.18.0",
65
- "eslint": "^8.0.0",
71
+ "eslint": "^9.37.0",
66
72
  "eslint-config-airbnb": "^19.0.4",
67
- "eslint-config-prettier": "^9.0.0",
68
- "eslint-plugin-import": "^2.31.0",
69
- "eslint-plugin-jest": "^27.9.0",
73
+ "eslint-config-prettier": "^10.1.8",
74
+ "eslint-plugin-import": "^2.32.0",
75
+ "eslint-plugin-jest": "^29.0.1",
70
76
  "eslint-plugin-jsx-a11y": "^6.10.2",
71
- "eslint-plugin-prettier": "^5.2.6",
77
+ "eslint-plugin-prettier": "^5.5.4",
72
78
  "eslint-plugin-react": "^7.37.5",
73
- "eslint-plugin-react-hooks": "^4.6.0",
79
+ "eslint-plugin-react-hooks": "^7.0.0",
74
80
  "husky": "^9.1.7",
75
81
  "jest": "^29.7.0",
82
+ "knip": "^5.64.2",
76
83
  "lint-staged": "^15.2.10",
77
84
  "memory-fs": "^0.5.0",
78
85
  "mini-css-extract-plugin": "^2.9.4",
@@ -81,9 +88,11 @@
81
88
  "sass-loader": "^16.0.5",
82
89
  "swc-loader": "^0.1.15",
83
90
  "thenify": "^3.3.1",
91
+ "ts-jest": "^29.4.5",
84
92
  "typescript": "^5.9.2",
85
93
  "webpack": "5.93.0",
86
94
  "webpack-assets-manifest": "^5.0.6",
95
+ "webpack-cli": "^6.0.0",
87
96
  "webpack-subresource-integrity": "^5.1.0"
88
97
  },
89
98
  "peerDependencies": {
@@ -210,7 +219,7 @@
210
219
  ]
211
220
  },
212
221
  "engines": {
213
- "node": ">= 14",
222
+ "node": ">= 20",
214
223
  "yarn": ">=1 <5"
215
224
  },
216
225
  "publishConfig": {
@@ -21,7 +21,7 @@ try {
21
21
  cwd: process.cwd()
22
22
  })
23
23
  process.exit(0)
24
- } catch (error) {
24
+ } catch {
25
25
  // Type checking failed
26
26
  process.exit(1)
27
27
  }