shakapacker 9.0.0.beta.0 → 9.0.0.beta.2

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/claude-code-review.yml +54 -0
  3. data/.github/workflows/claude.yml +50 -0
  4. data/.rubocop.yml +1 -0
  5. data/CHANGELOG.md +6 -2
  6. data/Gemfile.lock +1 -1
  7. data/Rakefile +18 -1
  8. data/docs/rspack.md +7 -7
  9. data/docs/rspack_migration_guide.md +202 -0
  10. data/docs/using_esbuild_loader.md +3 -3
  11. data/docs/using_swc_loader.md +5 -3
  12. data/lib/install/bin/shakapacker +3 -17
  13. data/lib/install/config/shakapacker.yml +5 -4
  14. data/lib/shakapacker/configuration.rb +36 -3
  15. data/lib/shakapacker/dev_server_runner.rb +19 -9
  16. data/lib/shakapacker/manifest.rb +4 -3
  17. data/lib/shakapacker/rspack_runner.rb +4 -42
  18. data/lib/shakapacker/runner.rb +105 -11
  19. data/lib/shakapacker/utils/manager.rb +2 -0
  20. data/lib/shakapacker/version.rb +1 -1
  21. data/lib/shakapacker/version_checker.rb +1 -1
  22. data/lib/shakapacker/webpack_runner.rb +4 -42
  23. data/lib/tasks/shakapacker/install.rake +6 -2
  24. data/package/config.js +24 -0
  25. data/package/environments/base.js +12 -2
  26. data/package/environments/development.js +52 -12
  27. data/package/environments/production.js +8 -3
  28. data/package/environments/test.js +5 -3
  29. data/package/index.d.ts +57 -29
  30. data/package/index.js +1 -1
  31. data/package/optimization/rspack.js +9 -5
  32. data/package/plugins/rspack.js +12 -28
  33. data/package/rspack/index.js +57 -0
  34. data/package/rules/babel.js +2 -2
  35. data/package/rules/esbuild.js +2 -2
  36. data/package/rules/raw.js +5 -5
  37. data/package/rules/rspack.js +73 -7
  38. data/package/rules/swc.js +2 -2
  39. data/package/utils/debug.js +49 -0
  40. data/package/utils/getStyleRule.js +3 -3
  41. data/package/utils/requireOrError.js +1 -1
  42. data/package/utils/validateDependencies.js +61 -0
  43. data/package/webpackDevServerConfig.js +2 -0
  44. data/package.json +1 -1
  45. data/test/package/rules/esbuild.test.js +1 -1
  46. data/test/package/rules/swc.test.js +1 -1
  47. metadata +8 -3
  48. data/lib/install/bin/shakapacker-rspack +0 -13
@@ -1,6 +1,7 @@
1
1
  const { requireOrError } = require("../utils/requireOrError")
2
+ const { error: logError } = require("../utils/debug")
2
3
 
3
- const { rspack } = requireOrError("@rspack/core")
4
+ const rspack = requireOrError("@rspack/core")
4
5
 
5
6
  const getOptimization = () => {
6
7
  // Use Rspack's built-in minification instead of terser-webpack-plugin
@@ -11,10 +12,13 @@ const getOptimization = () => {
11
12
  new rspack.LightningCssMinimizerRspackPlugin()
12
13
  ]
13
14
  } catch (error) {
14
- // eslint-disable-next-line no-console
15
- console.warn(
16
- "[SHAKAPACKER]: Warning: Could not configure Rspack minimizers:",
17
- error.message
15
+ // Log full error with stack trace
16
+ logError(
17
+ `Failed to configure Rspack minimizers: ${error.message}\n${error.stack}`
18
+ )
19
+ // Re-throw the error to properly propagate it
20
+ throw new Error(
21
+ `Could not configure Rspack minimizers: ${error.message}. Please check that @rspack/core is properly installed.`
18
22
  )
19
23
  }
20
24
  return result
@@ -1,4 +1,3 @@
1
- const { existsSync, readFileSync } = require("fs")
2
1
  const { requireOrError } = require("../utils/requireOrError")
3
2
 
4
3
  const { RspackManifestPlugin } = requireOrError("rspack-manifest-plugin")
@@ -16,27 +15,7 @@ const getPlugins = () => {
16
15
  writeToFileEmit: true,
17
16
  // rspack-manifest-plugin uses different option names than webpack-assets-manifest
18
17
  generate: (seed, files, entrypoints) => {
19
- let manifest = seed || {}
20
-
21
- // Load existing manifest if it exists to handle concurrent builds
22
- try {
23
- if (existsSync(config.manifestPath)) {
24
- const existingContent = readFileSync(config.manifestPath, "utf8")
25
- const parsed = JSON.parse(existingContent)
26
- if (parsed && typeof parsed === "object") {
27
- manifest = {
28
- ...manifest,
29
- ...parsed
30
- }
31
- }
32
- }
33
- } catch (error) {
34
- // eslint-disable-next-line no-console
35
- console.warn(
36
- "[SHAKAPACKER]: Warning: Could not read existing manifest.json:",
37
- String(error)
38
- )
39
- }
18
+ const manifest = seed || {}
40
19
 
41
20
  // Add files mapping first
42
21
  files.forEach((file) => {
@@ -47,12 +26,17 @@ const getPlugins = () => {
47
26
  const entrypointsManifest = {}
48
27
  Object.entries(entrypoints).forEach(
49
28
  ([entrypointName, entrypointFiles]) => {
50
- const jsFiles = entrypointFiles.filter((file) =>
51
- file.endsWith(".js")
52
- )
53
- const cssFiles = entrypointFiles.filter((file) =>
54
- file.endsWith(".css")
55
- )
29
+ const jsFiles = entrypointFiles
30
+ .filter(
31
+ (file) => file.endsWith(".js") && !file.includes(".hot-update.")
32
+ )
33
+ .map((file) => config.publicPathWithoutCDN + file)
34
+ const cssFiles = entrypointFiles
35
+ .filter(
36
+ (file) =>
37
+ file.endsWith(".css") && !file.includes(".hot-update.")
38
+ )
39
+ .map((file) => config.publicPathWithoutCDN + file)
56
40
 
57
41
  entrypointsManifest[entrypointName] = {
58
42
  assets: {
@@ -0,0 +1,57 @@
1
+ /* eslint global-require: 0 */
2
+ /* eslint import/no-dynamic-require: 0 */
3
+
4
+ const webpackMerge = require("webpack-merge")
5
+ const { resolve } = require("path")
6
+ const { existsSync } = require("fs")
7
+ const config = require("../config")
8
+ const baseConfig = require("../environments/base")
9
+
10
+ const rulesPath = resolve(__dirname, "../rules", "rspack.js")
11
+ const rules = require(rulesPath)
12
+ const devServer = require("../dev_server")
13
+ const env = require("../env")
14
+ const { moduleExists, canProcess } = require("../utils/helpers")
15
+ const inliningCss = require("../utils/inliningCss")
16
+ const { getPlugins } = require("../plugins/rspack")
17
+ const { getOptimization } = require("../optimization/rspack")
18
+ const { validateRspackDependencies } = require("../utils/validateDependencies")
19
+
20
+ const generateRspackConfig = (extraConfig = {}, ...extraArgs) => {
21
+ // Validate required dependencies first
22
+ validateRspackDependencies()
23
+ if (extraArgs.length > 0) {
24
+ throw new Error(
25
+ "Only one extra config may be passed here - use webpack-merge to merge configs before passing them to Shakapacker"
26
+ )
27
+ }
28
+
29
+ const { nodeEnv } = env
30
+ const path = resolve(__dirname, "../environments", `${nodeEnv}.js`)
31
+ const environmentConfig = existsSync(path) ? require(path) : baseConfig
32
+
33
+ // Create base rspack config
34
+ const rspackConfig = {
35
+ ...environmentConfig,
36
+ module: {
37
+ rules
38
+ },
39
+ plugins: getPlugins(),
40
+ optimization: getOptimization()
41
+ }
42
+
43
+ return webpackMerge.merge({}, rspackConfig, extraConfig)
44
+ }
45
+
46
+ module.exports = {
47
+ config, // shakapacker.yml
48
+ devServer,
49
+ generateRspackConfig,
50
+ baseConfig,
51
+ env,
52
+ rules,
53
+ moduleExists,
54
+ canProcess,
55
+ inliningCss,
56
+ ...webpackMerge
57
+ }
@@ -1,9 +1,9 @@
1
1
  const { loaderMatches } = require("../utils/helpers")
2
- const { webpack_loader: webpackLoader } = require("../config")
2
+ const { javascript_transpiler: javascriptTranspiler } = require("../config")
3
3
  const { isProduction } = require("../env")
4
4
  const jscommon = require("./jscommon")
5
5
 
6
- module.exports = loaderMatches(webpackLoader, "babel", () => ({
6
+ module.exports = loaderMatches(javascriptTranspiler, "babel", () => ({
7
7
  test: /\.(js|jsx|mjs|ts|tsx|coffee)?(\.erb)?$/,
8
8
  ...jscommon,
9
9
  use: [
@@ -1,9 +1,9 @@
1
1
  const { loaderMatches } = require("../utils/helpers")
2
2
  const { getEsbuildLoaderConfig } = require("../esbuild")
3
- const { webpack_loader: webpackLoader } = require("../config")
3
+ const { javascript_transpiler: javascriptTranspiler } = require("../config")
4
4
  const jscommon = require("./jscommon")
5
5
 
6
- module.exports = loaderMatches(webpackLoader, "esbuild", () => ({
6
+ module.exports = loaderMatches(javascriptTranspiler, "esbuild", () => ({
7
7
  test: /\.(ts|tsx|js|jsx|mjs|coffee)?(\.erb)?$/,
8
8
  ...jscommon,
9
9
  use: ({ resource }) => getEsbuildLoaderConfig(resource)
data/package/rules/raw.js CHANGED
@@ -1,15 +1,15 @@
1
1
  const config = require("../config")
2
2
 
3
- const rspackRawConfig = {
3
+ const rspackRawConfig = () => ({
4
4
  resourceQuery: /raw/,
5
5
  type: "asset/source"
6
- }
6
+ })
7
7
 
8
- const webpackRawConfig = {
8
+ const webpackRawConfig = () => ({
9
9
  test: /\.html$/,
10
10
  exclude: /\.(js|mjs|jsx|ts|tsx)$/,
11
11
  type: "asset/source"
12
- }
12
+ })
13
13
 
14
14
  module.exports =
15
- config.bundler === "rspack" ? rspackRawConfig : webpackRawConfig
15
+ config.assets_bundler === "rspack" ? rspackRawConfig() : webpackRawConfig()
@@ -1,10 +1,14 @@
1
1
  /* eslint global-require: 0 */
2
2
 
3
3
  const { moduleExists } = require("../utils/helpers")
4
+ const { debug, info, warn } = require("../utils/debug")
5
+
6
+ debug("Loading Rspack rules configuration...")
4
7
 
5
8
  const rules = []
6
9
 
7
10
  // Use Rspack's built-in SWC loader for JavaScript files
11
+ debug("Adding JavaScript rule with builtin:swc-loader")
8
12
  rules.push({
9
13
  test: /\.(js|jsx|mjs)$/,
10
14
  exclude: /node_modules/,
@@ -30,6 +34,7 @@ rules.push({
30
34
  })
31
35
 
32
36
  // Use Rspack's built-in SWC loader for TypeScript files
37
+ debug("Adding TypeScript rule with builtin:swc-loader")
33
38
  rules.push({
34
39
  test: /\.(ts|tsx)$/,
35
40
  exclude: /node_modules/,
@@ -55,42 +60,103 @@ rules.push({
55
60
  })
56
61
 
57
62
  // CSS rules using Rspack's built-in CSS handling
63
+ debug("Checking for CSS loader...")
58
64
  if (moduleExists("css-loader")) {
65
+ debug("css-loader found, loading CSS rule configuration...")
59
66
  const css = require("./css")
60
- rules.push(css)
67
+ if (css) {
68
+ debug("Successfully added CSS rule")
69
+ rules.push(css)
70
+ } else {
71
+ warn("css-loader found but rule configuration returned null")
72
+ }
73
+ } else {
74
+ info("Skipping CSS support - css-loader not installed")
61
75
  }
62
76
 
63
77
  // Sass rules
78
+ debug("Checking for Sass loader...")
64
79
  if (moduleExists("sass") && moduleExists("sass-loader")) {
80
+ debug("sass and sass-loader found, loading Sass rule configuration...")
65
81
  const sass = require("./sass")
66
- rules.push(sass)
82
+ if (sass) {
83
+ debug("Successfully added Sass rule")
84
+ rules.push(sass)
85
+ } else {
86
+ warn("sass and sass-loader found but rule configuration returned null")
87
+ }
88
+ } else if (!moduleExists("sass")) {
89
+ info("Skipping Sass support - sass not installed")
90
+ } else if (!moduleExists("sass-loader")) {
91
+ info("Skipping Sass support - sass-loader not installed")
67
92
  }
68
93
 
69
94
  // Less rules
95
+ debug("Checking for Less loader...")
70
96
  if (moduleExists("less") && moduleExists("less-loader")) {
97
+ debug("less and less-loader found, loading Less rule configuration...")
71
98
  const less = require("./less")
72
- rules.push(less)
99
+ if (less) {
100
+ debug("Successfully added Less rule")
101
+ rules.push(less)
102
+ } else {
103
+ warn("less and less-loader found but rule configuration returned null")
104
+ }
105
+ } else if (!moduleExists("less")) {
106
+ info("Skipping Less support - less not installed")
107
+ } else if (!moduleExists("less-loader")) {
108
+ info("Skipping Less support - less-loader not installed")
73
109
  }
74
110
 
75
111
  // Stylus rules
112
+ debug("Checking for Stylus loader...")
76
113
  if (moduleExists("stylus") && moduleExists("stylus-loader")) {
114
+ debug("stylus and stylus-loader found, loading Stylus rule configuration...")
77
115
  const stylus = require("./stylus")
78
- rules.push(stylus)
116
+ if (stylus) {
117
+ debug("Successfully added Stylus rule")
118
+ rules.push(stylus)
119
+ } else {
120
+ warn("stylus and stylus-loader found but rule configuration returned null")
121
+ }
122
+ } else if (!moduleExists("stylus")) {
123
+ info("Skipping Stylus support - stylus not installed")
124
+ } else if (!moduleExists("stylus-loader")) {
125
+ info("Skipping Stylus support - stylus-loader not installed")
79
126
  }
80
127
 
81
128
  // ERB template support
129
+ debug("Checking for ERB template support...")
82
130
  const erb = require("./erb")
83
131
 
84
- rules.push(erb)
132
+ if (erb) {
133
+ debug("Successfully added ERB rule")
134
+ rules.push(erb)
135
+ } else {
136
+ info("Skipping ERB support - rails-erb-loader not installed")
137
+ }
85
138
 
86
139
  // File/asset handling using Rspack's built-in asset modules
140
+ debug("Adding file/asset handling rule...")
87
141
  const file = require("./file")
88
142
 
89
- rules.push(file)
143
+ if (file) {
144
+ debug("Successfully added file/asset rule")
145
+ rules.push(file)
146
+ } else {
147
+ warn("file rule configuration returned null")
148
+ }
90
149
 
91
150
  // Raw file loading
151
+ debug("Adding raw file loading rule...")
92
152
  const raw = require("./raw")
93
153
 
94
- rules.push(raw)
154
+ if (raw) {
155
+ debug("Successfully added raw file rule")
156
+ rules.push(raw)
157
+ } else {
158
+ warn("raw rule configuration returned null")
159
+ }
95
160
 
161
+ debug(`Rspack rules configuration complete. Total rules: ${rules.length}`)
96
162
  module.exports = rules
data/package/rules/swc.js CHANGED
@@ -1,9 +1,9 @@
1
1
  const { loaderMatches } = require("../utils/helpers")
2
2
  const { getSwcLoaderConfig } = require("../swc")
3
- const { webpack_loader: webpackLoader } = require("../config")
3
+ const { javascript_transpiler: javascriptTranspiler } = require("../config")
4
4
  const jscommon = require("./jscommon")
5
5
 
6
- module.exports = loaderMatches(webpackLoader, "swc", () => ({
6
+ module.exports = loaderMatches(javascriptTranspiler, "swc", () => ({
7
7
  test: /\.(ts|tsx|js|jsx|mjs|coffee)?(\.erb)?$/,
8
8
  ...jscommon,
9
9
  use: ({ resource }) => getSwcLoaderConfig(resource)
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Debug utility for Shakapacker
3
+ * Provides conditional logging based on environment variables
4
+ */
5
+
6
+ const isDebugMode = () => {
7
+ // Explicitly check for debug mode being disabled
8
+ if (process.env.SHAKAPACKER_DEBUG === "false") {
9
+ return false
10
+ }
11
+
12
+ // Support both SHAKAPACKER_DEBUG (new) and DEBUG_SHAKAPACKER (legacy) for backwards compatibility
13
+ return (
14
+ process.env.SHAKAPACKER_DEBUG === "true" ||
15
+ process.env.DEBUG_SHAKAPACKER === "true"
16
+ )
17
+ }
18
+
19
+ const debug = (message, ...args) => {
20
+ if (isDebugMode()) {
21
+ // eslint-disable-next-line no-console
22
+ console.log(`[Shakapacker] ${message}`, ...args)
23
+ }
24
+ }
25
+
26
+ const warn = (message, ...args) => {
27
+ // eslint-disable-next-line no-console
28
+ console.warn(`[Shakapacker] WARNING: ${message}`, ...args)
29
+ }
30
+
31
+ const error = (message, ...args) => {
32
+ // eslint-disable-next-line no-console
33
+ console.error(`[Shakapacker] ERROR: ${message}`, ...args)
34
+ }
35
+
36
+ const info = (message, ...args) => {
37
+ if (isDebugMode()) {
38
+ // eslint-disable-next-line no-console
39
+ console.info(`[Shakapacker] INFO: ${message}`, ...args)
40
+ }
41
+ }
42
+
43
+ module.exports = {
44
+ debug,
45
+ warn,
46
+ error,
47
+ info,
48
+ isDebugMode
49
+ }
@@ -15,7 +15,7 @@ const getStyleRule = (test, preprocessors = []) => {
15
15
  // style-loader is required when using css modules with HMR on the webpack-dev-server
16
16
 
17
17
  const extractionPlugin =
18
- config.bundle === "rspack"
18
+ config.assets_bundler === "rspack"
19
19
  ? requireOrError("@rspack/core").CssExtractRspackPlugin.loader
20
20
  : requireOrError("mini-css-extract-plugin").loader
21
21
 
@@ -40,8 +40,8 @@ const getStyleRule = (test, preprocessors = []) => {
40
40
  use
41
41
  }
42
42
 
43
- if (config.bundle === "rspack") {
44
- result.type = "javascript/auto" // Required for rspack CSS extraction
43
+ if (config.assets_bundler === "rspack") {
44
+ result.type = "javascript/auto"
45
45
  }
46
46
 
47
47
  return result
@@ -7,7 +7,7 @@ const requireOrError = (moduleName) => {
7
7
  return require(moduleName)
8
8
  } catch (error) {
9
9
  throw new Error(
10
- `[SHAKAPACKER]: ${moduleName} is required for ${config.bundler} but is not installed. View Shakapacker's documented dependencies at https://github.com/shakacode/shakapacker/tree/main/docs/peer-dependencies.md`
10
+ `[SHAKAPACKER]: ${moduleName} is required for ${config.assets_bundler} but is not installed. View Shakapacker's documented dependencies at https://github.com/shakacode/shakapacker/tree/main/docs/peer-dependencies.md`
11
11
  )
12
12
  }
13
13
  }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Validates that required dependencies are installed for the selected bundler
3
+ */
4
+
5
+ const { moduleExists } = require("./helpers")
6
+ const { error } = require("./debug")
7
+
8
+ const validateRspackDependencies = () => {
9
+ const requiredDependencies = ["@rspack/core", "rspack-manifest-plugin"]
10
+
11
+ const missingDependencies = requiredDependencies.filter(
12
+ (dep) => !moduleExists(dep)
13
+ )
14
+
15
+ if (missingDependencies.length > 0) {
16
+ error(
17
+ `Missing required dependencies for RSpack:\n${missingDependencies
18
+ .map((dep) => ` - ${dep}`)
19
+ .join(
20
+ "\n"
21
+ )}\n\nPlease install them with:\n npm install ${missingDependencies.join(
22
+ " "
23
+ )}`
24
+ )
25
+ throw new Error(
26
+ `Missing RSpack dependencies: ${missingDependencies.join(", ")}`
27
+ )
28
+ }
29
+ }
30
+
31
+ const validateWebpackDependencies = () => {
32
+ const requiredDependencies = [
33
+ "webpack",
34
+ "webpack-cli",
35
+ "webpack-assets-manifest"
36
+ ]
37
+
38
+ const missingDependencies = requiredDependencies.filter(
39
+ (dep) => !moduleExists(dep)
40
+ )
41
+
42
+ if (missingDependencies.length > 0) {
43
+ error(
44
+ `Missing required dependencies for Webpack:\n${missingDependencies
45
+ .map((dep) => ` - ${dep}`)
46
+ .join(
47
+ "\n"
48
+ )}\n\nPlease install them with:\n npm install ${missingDependencies.join(
49
+ " "
50
+ )}`
51
+ )
52
+ throw new Error(
53
+ `Missing Webpack dependencies: ${missingDependencies.join(", ")}`
54
+ )
55
+ }
56
+ }
57
+
58
+ module.exports = {
59
+ validateRspackDependencies,
60
+ validateWebpackDependencies
61
+ }
@@ -39,6 +39,7 @@ function createDevServerConfig() {
39
39
  devMiddleware: {
40
40
  publicPath
41
41
  },
42
+ hot: devServerYamlConfig.hmr,
42
43
  liveReload,
43
44
  historyApiFallback: {
44
45
  disableDotRule: true
@@ -47,6 +48,7 @@ function createDevServerConfig() {
47
48
  publicPath: contentBase
48
49
  }
49
50
  }
51
+ delete devServerYamlConfig.hmr
50
52
 
51
53
  if (devServerYamlConfig.static) {
52
54
  config.static = { ...config.static, ...devServerYamlConfig.static }
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shakapacker",
3
- "version": "9.0.0-beta.0",
3
+ "version": "9.0.0-beta.2",
4
4
  "description": "Use webpack to manage app-like JavaScript modules in Rails",
5
5
  "homepage": "https://github.com/shakacode/shakapacker",
6
6
  "bugs": {
@@ -11,7 +11,7 @@ jest.mock("../../../package/config", () => {
11
11
  const original = jest.requireActual("../../../package/config")
12
12
  return {
13
13
  ...original,
14
- webpack_loader: "esbuild",
14
+ javascript_transpiler: "esbuild",
15
15
  additional_paths: [...original.additional_paths, "node_modules/included"]
16
16
  }
17
17
  })
@@ -11,7 +11,7 @@ jest.mock("../../../package/config", () => {
11
11
  const original = jest.requireActual("../../../package/config")
12
12
  return {
13
13
  ...original,
14
- webpack_loader: "swc",
14
+ javascript_transpiler: "swc",
15
15
  additional_paths: [...original.additional_paths, "node_modules/included"]
16
16
  }
17
17
  })
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shakapacker
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.0.beta.0
4
+ version: 9.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -138,6 +138,8 @@ files:
138
138
  - ".github/ISSUE_TEMPLATE/feature_request.md"
139
139
  - ".github/PULL_REQUEST_TEMPLATE.md"
140
140
  - ".github/STATUS.md"
141
+ - ".github/workflows/claude-code-review.yml"
142
+ - ".github/workflows/claude.yml"
141
143
  - ".github/workflows/dummy.yml"
142
144
  - ".github/workflows/generator.yml"
143
145
  - ".github/workflows/node.yml"
@@ -165,6 +167,7 @@ files:
165
167
  - docs/peer-dependencies.md
166
168
  - docs/react.md
167
169
  - docs/rspack.md
170
+ - docs/rspack_migration_guide.md
168
171
  - docs/sprockets.md
169
172
  - docs/style_loader_vs_mini_css.md
170
173
  - docs/subresource_integrity.md
@@ -185,7 +188,6 @@ files:
185
188
  - lib/install/application.js
186
189
  - lib/install/bin/shakapacker
187
190
  - lib/install/bin/shakapacker-dev-server
188
- - lib/install/bin/shakapacker-rspack
189
191
  - lib/install/binstubs.rb
190
192
  - lib/install/config/rspack/rspack.config.js
191
193
  - lib/install/config/shakapacker.yml
@@ -245,6 +247,7 @@ files:
245
247
  - package/optimization/webpack.js
246
248
  - package/plugins/rspack.js
247
249
  - package/plugins/webpack.js
250
+ - package/rspack/index.js
248
251
  - package/rules/babel.js
249
252
  - package/rules/coffee.js
250
253
  - package/rules/css.js
@@ -261,12 +264,14 @@ files:
261
264
  - package/rules/webpack.js
262
265
  - package/swc/index.js
263
266
  - package/utils/configPath.js
267
+ - package/utils/debug.js
264
268
  - package/utils/defaultConfigPath.js
265
269
  - package/utils/getStyleRule.js
266
270
  - package/utils/helpers.js
267
271
  - package/utils/inliningCss.js
268
272
  - package/utils/requireOrError.js
269
273
  - package/utils/snakeToCamelCase.js
274
+ - package/utils/validateDependencies.js
270
275
  - package/webpackDevServerConfig.js
271
276
  - prettier.config.js
272
277
  - shakapacker.gemspec
@@ -297,7 +302,7 @@ homepage: https://github.com/shakacode/shakapacker
297
302
  licenses:
298
303
  - MIT
299
304
  metadata:
300
- source_code_uri: https://github.com/shakacode/shakapacker/tree/v9.0.0.beta.0
305
+ source_code_uri: https://github.com/shakacode/shakapacker/tree/v9.0.0.beta.2
301
306
  rdoc_options: []
302
307
  require_paths:
303
308
  - lib
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- ENV["RAILS_ENV"] ||= "development"
4
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
5
-
6
- require "bundler/setup"
7
- require "shakapacker"
8
- require "shakapacker/rspack_runner"
9
-
10
- APP_ROOT = File.expand_path("..", __dir__)
11
- Dir.chdir(APP_ROOT) do
12
- Shakapacker::RspackRunner.run(ARGV)
13
- end