shakapacker 8.0.2 → 9.2.0
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/.eslintignore +1 -0
- data/.eslintrc.fast.js +40 -0
- data/.eslintrc.js +48 -0
- data/.github/STATUS.md +1 -0
- data/.github/workflows/claude-code-review.yml +54 -0
- data/.github/workflows/claude.yml +50 -0
- data/.github/workflows/dummy.yml +9 -4
- data/.github/workflows/generator.yml +32 -10
- data/.github/workflows/node.yml +23 -1
- data/.github/workflows/ruby.yml +33 -2
- data/.github/workflows/test-bundlers.yml +170 -0
- data/.gitignore +20 -0
- data/.husky/pre-commit +2 -0
- data/.npmignore +56 -0
- data/.prettierignore +3 -0
- data/.rubocop.yml +1 -0
- data/.yalcignore +26 -0
- data/CHANGELOG.md +302 -16
- data/CLAUDE.md +29 -0
- data/CONTRIBUTING.md +138 -20
- data/Gemfile.lock +83 -89
- data/README.md +343 -105
- data/Rakefile +39 -4
- data/TODO.md +50 -0
- data/TODO_v9.md +87 -0
- data/bin/export-bundler-config +11 -0
- data/conductor-setup.sh +70 -0
- data/conductor.json +7 -0
- data/docs/cdn_setup.md +379 -0
- data/docs/common-upgrades.md +615 -0
- data/docs/css-modules-export-mode.md +512 -0
- data/docs/deployment.md +62 -9
- data/docs/optional-peer-dependencies.md +198 -0
- data/docs/peer-dependencies.md +60 -0
- data/docs/react.md +6 -14
- data/docs/releasing.md +197 -0
- data/docs/rspack.md +190 -0
- data/docs/rspack_migration_guide.md +305 -0
- data/docs/subresource_integrity.md +54 -0
- data/docs/transpiler-migration.md +209 -0
- data/docs/transpiler-performance.md +179 -0
- data/docs/troubleshooting.md +157 -22
- data/docs/typescript-migration.md +379 -0
- data/docs/typescript.md +99 -0
- data/docs/using_esbuild_loader.md +3 -3
- data/docs/using_swc_loader.md +112 -10
- data/docs/v6_upgrade.md +10 -0
- data/docs/v8_upgrade.md +3 -5
- data/docs/v9_upgrade.md +458 -0
- data/gemfiles/Gemfile-rails.6.0.x +2 -1
- data/gemfiles/Gemfile-rails.6.1.x +1 -1
- data/gemfiles/Gemfile-rails.7.0.x +2 -2
- data/gemfiles/Gemfile-rails.7.1.x +1 -2
- data/gemfiles/Gemfile-rails.7.2.x +11 -0
- data/gemfiles/Gemfile-rails.8.0.x +11 -0
- data/lib/install/bin/export-bundler-config +11 -0
- data/lib/install/bin/shakapacker +4 -6
- data/lib/install/bin/shakapacker-dev-server +1 -1
- data/lib/install/config/rspack/rspack.config.js +6 -0
- data/lib/install/config/rspack/rspack.config.ts +7 -0
- data/lib/install/config/shakapacker.yml +25 -5
- data/lib/install/config/webpack/webpack.config.ts +7 -0
- data/lib/install/package.json +38 -0
- data/lib/install/template.rb +194 -44
- data/lib/shakapacker/bundler_switcher.rb +329 -0
- data/lib/shakapacker/compiler.rb +2 -1
- data/lib/shakapacker/compiler_strategy.rb +2 -2
- data/lib/shakapacker/configuration.rb +173 -2
- data/lib/shakapacker/dev_server_runner.rb +29 -8
- data/lib/shakapacker/digest_strategy.rb +2 -1
- data/lib/shakapacker/doctor.rb +905 -0
- data/lib/shakapacker/helper.rb +64 -16
- data/lib/shakapacker/manifest.rb +10 -3
- data/lib/shakapacker/mtime_strategy.rb +1 -1
- data/lib/shakapacker/railtie.rb +4 -4
- data/lib/shakapacker/rspack_runner.rb +19 -0
- data/lib/shakapacker/runner.rb +159 -10
- data/lib/shakapacker/swc_migrator.rb +384 -0
- data/lib/shakapacker/utils/manager.rb +15 -2
- data/lib/shakapacker/version.rb +1 -1
- data/lib/shakapacker/version_checker.rb +2 -2
- data/lib/shakapacker/webpack_runner.rb +6 -43
- data/lib/shakapacker.rb +22 -11
- data/lib/tasks/shakapacker/doctor.rake +8 -0
- data/lib/tasks/shakapacker/export_bundler_config.rake +72 -0
- data/lib/tasks/shakapacker/install.rake +12 -2
- data/lib/tasks/shakapacker/migrate_to_swc.rake +13 -0
- data/lib/tasks/shakapacker/switch_bundler.rake +82 -0
- data/lib/tasks/shakapacker.rake +2 -0
- data/package/.npmignore +4 -0
- data/package/babel/preset.ts +56 -0
- data/package/config.ts +175 -0
- data/package/configExporter/cli.ts +683 -0
- data/package/configExporter/configDocs.ts +102 -0
- data/package/configExporter/fileWriter.ts +92 -0
- data/package/configExporter/index.ts +5 -0
- data/package/configExporter/types.ts +36 -0
- data/package/configExporter/yamlSerializer.ts +266 -0
- data/package/{dev_server.js → dev_server.ts} +8 -5
- data/package/env.ts +92 -0
- data/package/environments/__type-tests__/rspack-plugin-compatibility.ts +30 -0
- data/package/environments/{base.js → base.ts} +56 -60
- data/package/environments/development.ts +90 -0
- data/package/environments/production.ts +80 -0
- data/package/environments/test.ts +53 -0
- data/package/environments/types.ts +98 -0
- data/package/esbuild/index.ts +42 -0
- data/package/index.d.ts +3 -60
- data/package/index.ts +55 -0
- data/package/loaders.d.ts +28 -0
- data/package/optimization/rspack.ts +36 -0
- data/package/optimization/webpack.ts +57 -0
- data/package/plugins/rspack.ts +103 -0
- data/package/plugins/webpack.ts +62 -0
- data/package/rspack/index.ts +64 -0
- data/package/rules/{babel.js → babel.ts} +2 -2
- data/package/rules/{coffee.js → coffee.ts} +1 -1
- data/package/rules/css.ts +3 -0
- data/package/rules/{erb.js → erb.ts} +1 -1
- data/package/rules/esbuild.ts +10 -0
- data/package/rules/file.ts +40 -0
- data/package/rules/{jscommon.js → jscommon.ts} +4 -4
- data/package/rules/{less.js → less.ts} +4 -4
- data/package/rules/raw.ts +25 -0
- data/package/rules/rspack.ts +176 -0
- data/package/rules/{sass.js → sass.ts} +7 -3
- data/package/rules/{stylus.js → stylus.ts} +4 -8
- data/package/rules/swc.ts +10 -0
- data/package/rules/webpack.ts +16 -0
- data/package/swc/index.ts +56 -0
- data/package/types/README.md +88 -0
- data/package/types/index.ts +61 -0
- data/package/types.ts +108 -0
- data/package/utils/configPath.ts +6 -0
- data/package/utils/debug.ts +49 -0
- data/package/utils/defaultConfigPath.ts +4 -0
- data/package/utils/errorCodes.ts +219 -0
- data/package/utils/errorHelpers.ts +143 -0
- data/package/utils/getStyleRule.ts +64 -0
- data/package/utils/helpers.ts +85 -0
- data/package/utils/{inliningCss.js → inliningCss.ts} +3 -3
- data/package/utils/pathValidation.ts +139 -0
- data/package/utils/requireOrError.ts +15 -0
- data/package/utils/snakeToCamelCase.ts +5 -0
- data/package/utils/typeGuards.ts +342 -0
- data/package/utils/validateDependencies.ts +61 -0
- data/package/webpack-types.d.ts +33 -0
- data/package/webpackDevServerConfig.ts +117 -0
- data/package-lock.json +13047 -0
- data/package.json +154 -18
- data/scripts/remove-use-strict.js +45 -0
- data/scripts/type-check-no-emit.js +27 -0
- data/test/helpers.js +1 -1
- data/test/package/config.test.js +43 -0
- data/test/package/env.test.js +42 -7
- data/test/package/environments/base.test.js +5 -1
- data/test/package/rules/babel.test.js +16 -0
- data/test/package/rules/esbuild.test.js +1 -1
- data/test/package/rules/raw.test.js +40 -7
- data/test/package/rules/swc.test.js +1 -1
- data/test/package/rules/webpack.test.js +35 -0
- data/test/package/staging.test.js +4 -3
- data/test/package/transpiler-defaults.test.js +127 -0
- data/test/peer-dependencies.sh +85 -0
- data/test/scripts/remove-use-strict.test.js +125 -0
- data/test/typescript/build.test.js +118 -0
- data/test/typescript/environments.test.js +107 -0
- data/test/typescript/pathValidation.test.js +142 -0
- data/test/typescript/securityValidation.test.js +182 -0
- data/tools/README.md +124 -0
- data/tools/css-modules-v9-codemod.js +179 -0
- data/tsconfig.eslint.json +16 -0
- data/tsconfig.json +38 -0
- data/yarn.lock +4165 -2706
- metadata +129 -41
- data/package/babel/preset.js +0 -37
- data/package/config.js +0 -54
- data/package/env.js +0 -48
- data/package/environments/development.js +0 -13
- data/package/environments/production.js +0 -88
- data/package/environments/test.js +0 -3
- data/package/esbuild/index.js +0 -40
- data/package/index.js +0 -40
- data/package/rules/css.js +0 -3
- data/package/rules/esbuild.js +0 -10
- data/package/rules/file.js +0 -29
- data/package/rules/index.js +0 -20
- data/package/rules/raw.js +0 -5
- data/package/rules/swc.js +0 -10
- data/package/swc/index.js +0 -50
- data/package/utils/configPath.js +0 -4
- data/package/utils/defaultConfigPath.js +0 -2
- data/package/utils/getStyleRule.js +0 -40
- data/package/utils/helpers.js +0 -58
- data/package/utils/snakeToCamelCase.js +0 -5
- data/package/webpackDevServerConfig.js +0 -71
- data/test/package/rules/index.test.js +0 -16
metadata
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shakapacker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 9.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Heinemeier Hansson
|
|
8
8
|
- Gaurav Tiwari
|
|
9
9
|
- Justin Gordon
|
|
10
|
-
autorequire:
|
|
11
10
|
bindir: bin
|
|
12
11
|
cert_chain: []
|
|
13
|
-
date:
|
|
12
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
14
13
|
dependencies:
|
|
15
14
|
- !ruby/object:Gem::Dependency
|
|
16
15
|
name: activesupport
|
|
@@ -124,7 +123,6 @@ dependencies:
|
|
|
124
123
|
- - ">="
|
|
125
124
|
- !ruby/object:Gem::Version
|
|
126
125
|
version: '0'
|
|
127
|
-
description:
|
|
128
126
|
email:
|
|
129
127
|
- david@basecamp.com
|
|
130
128
|
- gaurav@gauravtiwari.co.uk
|
|
@@ -134,20 +132,30 @@ extensions: []
|
|
|
134
132
|
extra_rdoc_files: []
|
|
135
133
|
files:
|
|
136
134
|
- ".eslintignore"
|
|
135
|
+
- ".eslintrc.fast.js"
|
|
137
136
|
- ".eslintrc.js"
|
|
138
137
|
- ".github/FUNDING.yml"
|
|
139
138
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
140
139
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
141
140
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
141
|
+
- ".github/STATUS.md"
|
|
142
|
+
- ".github/workflows/claude-code-review.yml"
|
|
143
|
+
- ".github/workflows/claude.yml"
|
|
142
144
|
- ".github/workflows/dummy.yml"
|
|
143
145
|
- ".github/workflows/generator.yml"
|
|
144
146
|
- ".github/workflows/node.yml"
|
|
145
147
|
- ".github/workflows/ruby.yml"
|
|
148
|
+
- ".github/workflows/test-bundlers.yml"
|
|
146
149
|
- ".gitignore"
|
|
150
|
+
- ".husky/pre-commit"
|
|
147
151
|
- ".node-version"
|
|
152
|
+
- ".npmignore"
|
|
153
|
+
- ".prettierignore"
|
|
148
154
|
- ".rspec"
|
|
149
155
|
- ".rubocop.yml"
|
|
156
|
+
- ".yalcignore"
|
|
150
157
|
- CHANGELOG.md
|
|
158
|
+
- CLAUDE.md
|
|
151
159
|
- CONTRIBUTING.md
|
|
152
160
|
- Gemfile
|
|
153
161
|
- Gemfile.development_dependencies
|
|
@@ -155,37 +163,64 @@ files:
|
|
|
155
163
|
- MIT-LICENSE
|
|
156
164
|
- README.md
|
|
157
165
|
- Rakefile
|
|
166
|
+
- TODO.md
|
|
167
|
+
- TODO_v9.md
|
|
158
168
|
- __mocks__/nonexistent/package.json
|
|
159
169
|
- __mocks__/sass-loader/package.json
|
|
170
|
+
- bin/export-bundler-config
|
|
171
|
+
- conductor-setup.sh
|
|
172
|
+
- conductor.json
|
|
160
173
|
- config/README.md
|
|
161
174
|
- config/shakapacker.yml
|
|
175
|
+
- docs/cdn_setup.md
|
|
176
|
+
- docs/common-upgrades.md
|
|
177
|
+
- docs/css-modules-export-mode.md
|
|
162
178
|
- docs/customizing_babel_config.md
|
|
163
179
|
- docs/deployment.md
|
|
164
180
|
- docs/developing_shakapacker.md
|
|
181
|
+
- docs/optional-peer-dependencies.md
|
|
182
|
+
- docs/peer-dependencies.md
|
|
165
183
|
- docs/react.md
|
|
184
|
+
- docs/releasing.md
|
|
185
|
+
- docs/rspack.md
|
|
186
|
+
- docs/rspack_migration_guide.md
|
|
166
187
|
- docs/sprockets.md
|
|
167
188
|
- docs/style_loader_vs_mini_css.md
|
|
189
|
+
- docs/subresource_integrity.md
|
|
190
|
+
- docs/transpiler-migration.md
|
|
191
|
+
- docs/transpiler-performance.md
|
|
168
192
|
- docs/troubleshooting.md
|
|
193
|
+
- docs/typescript-migration.md
|
|
194
|
+
- docs/typescript.md
|
|
169
195
|
- docs/using_esbuild_loader.md
|
|
170
196
|
- docs/using_swc_loader.md
|
|
171
197
|
- docs/v6_upgrade.md
|
|
172
198
|
- docs/v7_upgrade.md
|
|
173
199
|
- docs/v8_upgrade.md
|
|
200
|
+
- docs/v9_upgrade.md
|
|
174
201
|
- gemfiles/Gemfile-rails-edge
|
|
175
202
|
- gemfiles/Gemfile-rails.6.0.x
|
|
176
203
|
- gemfiles/Gemfile-rails.6.1.x
|
|
177
204
|
- gemfiles/Gemfile-rails.7.0.x
|
|
178
205
|
- gemfiles/Gemfile-rails.7.1.x
|
|
206
|
+
- gemfiles/Gemfile-rails.7.2.x
|
|
207
|
+
- gemfiles/Gemfile-rails.8.0.x
|
|
179
208
|
- jest.config.js
|
|
180
209
|
- lib/install/application.js
|
|
210
|
+
- lib/install/bin/export-bundler-config
|
|
181
211
|
- lib/install/bin/shakapacker
|
|
182
212
|
- lib/install/bin/shakapacker-dev-server
|
|
183
213
|
- lib/install/binstubs.rb
|
|
214
|
+
- lib/install/config/rspack/rspack.config.js
|
|
215
|
+
- lib/install/config/rspack/rspack.config.ts
|
|
184
216
|
- lib/install/config/shakapacker.yml
|
|
185
217
|
- lib/install/config/webpack/webpack.config.js
|
|
218
|
+
- lib/install/config/webpack/webpack.config.ts
|
|
219
|
+
- lib/install/package.json
|
|
186
220
|
- lib/install/template.rb
|
|
187
221
|
- lib/shakapacker.rb
|
|
188
222
|
- lib/shakapacker/base_strategy.rb
|
|
223
|
+
- lib/shakapacker/bundler_switcher.rb
|
|
189
224
|
- lib/shakapacker/commands.rb
|
|
190
225
|
- lib/shakapacker/compiler.rb
|
|
191
226
|
- lib/shakapacker/compiler_strategy.rb
|
|
@@ -195,13 +230,16 @@ files:
|
|
|
195
230
|
- lib/shakapacker/dev_server_proxy.rb
|
|
196
231
|
- lib/shakapacker/dev_server_runner.rb
|
|
197
232
|
- lib/shakapacker/digest_strategy.rb
|
|
233
|
+
- lib/shakapacker/doctor.rb
|
|
198
234
|
- lib/shakapacker/env.rb
|
|
199
235
|
- lib/shakapacker/helper.rb
|
|
200
236
|
- lib/shakapacker/instance.rb
|
|
201
237
|
- lib/shakapacker/manifest.rb
|
|
202
238
|
- lib/shakapacker/mtime_strategy.rb
|
|
203
239
|
- lib/shakapacker/railtie.rb
|
|
240
|
+
- lib/shakapacker/rspack_runner.rb
|
|
204
241
|
- lib/shakapacker/runner.rb
|
|
242
|
+
- lib/shakapacker/swc_migrator.rb
|
|
205
243
|
- lib/shakapacker/utils/manager.rb
|
|
206
244
|
- lib/shakapacker/utils/misc.rb
|
|
207
245
|
- lib/shakapacker/utils/version_syntax_converter.rb
|
|
@@ -216,44 +254,78 @@ files:
|
|
|
216
254
|
- lib/tasks/shakapacker/clean.rake
|
|
217
255
|
- lib/tasks/shakapacker/clobber.rake
|
|
218
256
|
- lib/tasks/shakapacker/compile.rake
|
|
257
|
+
- lib/tasks/shakapacker/doctor.rake
|
|
258
|
+
- lib/tasks/shakapacker/export_bundler_config.rake
|
|
219
259
|
- lib/tasks/shakapacker/info.rake
|
|
220
260
|
- lib/tasks/shakapacker/install.rake
|
|
261
|
+
- lib/tasks/shakapacker/migrate_to_swc.rake
|
|
262
|
+
- lib/tasks/shakapacker/switch_bundler.rake
|
|
221
263
|
- lib/tasks/shakapacker/verify_config.rake
|
|
222
264
|
- lib/tasks/shakapacker/verify_install.rake
|
|
265
|
+
- package-lock.json
|
|
223
266
|
- package.json
|
|
224
|
-
- package
|
|
225
|
-
- package/
|
|
226
|
-
- package/
|
|
227
|
-
- package/
|
|
228
|
-
- package/
|
|
229
|
-
- package/
|
|
230
|
-
- package/
|
|
231
|
-
- package/
|
|
232
|
-
- package/
|
|
267
|
+
- package/.npmignore
|
|
268
|
+
- package/babel/preset.ts
|
|
269
|
+
- package/config.ts
|
|
270
|
+
- package/configExporter/cli.ts
|
|
271
|
+
- package/configExporter/configDocs.ts
|
|
272
|
+
- package/configExporter/fileWriter.ts
|
|
273
|
+
- package/configExporter/index.ts
|
|
274
|
+
- package/configExporter/types.ts
|
|
275
|
+
- package/configExporter/yamlSerializer.ts
|
|
276
|
+
- package/dev_server.ts
|
|
277
|
+
- package/env.ts
|
|
278
|
+
- package/environments/__type-tests__/rspack-plugin-compatibility.ts
|
|
279
|
+
- package/environments/base.ts
|
|
280
|
+
- package/environments/development.ts
|
|
281
|
+
- package/environments/production.ts
|
|
282
|
+
- package/environments/test.ts
|
|
283
|
+
- package/environments/types.ts
|
|
284
|
+
- package/esbuild/index.ts
|
|
233
285
|
- package/index.d.ts
|
|
234
|
-
- package/index.
|
|
235
|
-
- package/
|
|
236
|
-
- package/
|
|
237
|
-
- package/
|
|
238
|
-
- package/
|
|
239
|
-
- package/
|
|
240
|
-
- package/
|
|
241
|
-
- package/rules/
|
|
242
|
-
- package/rules/
|
|
243
|
-
- package/rules/
|
|
244
|
-
- package/rules/
|
|
245
|
-
- package/rules/
|
|
246
|
-
- package/rules/
|
|
247
|
-
- package/rules/
|
|
248
|
-
- package/
|
|
249
|
-
- package/
|
|
250
|
-
- package/
|
|
251
|
-
- package/
|
|
252
|
-
- package/
|
|
253
|
-
- package/
|
|
254
|
-
- package/
|
|
255
|
-
- package/
|
|
286
|
+
- package/index.ts
|
|
287
|
+
- package/loaders.d.ts
|
|
288
|
+
- package/optimization/rspack.ts
|
|
289
|
+
- package/optimization/webpack.ts
|
|
290
|
+
- package/plugins/rspack.ts
|
|
291
|
+
- package/plugins/webpack.ts
|
|
292
|
+
- package/rspack/index.ts
|
|
293
|
+
- package/rules/babel.ts
|
|
294
|
+
- package/rules/coffee.ts
|
|
295
|
+
- package/rules/css.ts
|
|
296
|
+
- package/rules/erb.ts
|
|
297
|
+
- package/rules/esbuild.ts
|
|
298
|
+
- package/rules/file.ts
|
|
299
|
+
- package/rules/jscommon.ts
|
|
300
|
+
- package/rules/less.ts
|
|
301
|
+
- package/rules/raw.ts
|
|
302
|
+
- package/rules/rspack.ts
|
|
303
|
+
- package/rules/sass.ts
|
|
304
|
+
- package/rules/stylus.ts
|
|
305
|
+
- package/rules/swc.ts
|
|
306
|
+
- package/rules/webpack.ts
|
|
307
|
+
- package/swc/index.ts
|
|
308
|
+
- package/types.ts
|
|
309
|
+
- package/types/README.md
|
|
310
|
+
- package/types/index.ts
|
|
311
|
+
- package/utils/configPath.ts
|
|
312
|
+
- package/utils/debug.ts
|
|
313
|
+
- package/utils/defaultConfigPath.ts
|
|
314
|
+
- package/utils/errorCodes.ts
|
|
315
|
+
- package/utils/errorHelpers.ts
|
|
316
|
+
- package/utils/getStyleRule.ts
|
|
317
|
+
- package/utils/helpers.ts
|
|
318
|
+
- package/utils/inliningCss.ts
|
|
319
|
+
- package/utils/pathValidation.ts
|
|
320
|
+
- package/utils/requireOrError.ts
|
|
321
|
+
- package/utils/snakeToCamelCase.ts
|
|
322
|
+
- package/utils/typeGuards.ts
|
|
323
|
+
- package/utils/validateDependencies.ts
|
|
324
|
+
- package/webpack-types.d.ts
|
|
325
|
+
- package/webpackDevServerConfig.ts
|
|
256
326
|
- prettier.config.js
|
|
327
|
+
- scripts/remove-use-strict.js
|
|
328
|
+
- scripts/type-check-no-emit.js
|
|
257
329
|
- shakapacker.gemspec
|
|
258
330
|
- test/helpers.js
|
|
259
331
|
- test/package/config.test.js
|
|
@@ -269,21 +341,31 @@ files:
|
|
|
269
341
|
- test/package/rules/babel.test.js
|
|
270
342
|
- test/package/rules/esbuild.test.js
|
|
271
343
|
- test/package/rules/file.test.js
|
|
272
|
-
- test/package/rules/index.test.js
|
|
273
344
|
- test/package/rules/raw.test.js
|
|
274
345
|
- test/package/rules/sass.test.js
|
|
275
346
|
- test/package/rules/sass1.test.js
|
|
276
347
|
- test/package/rules/swc.test.js
|
|
348
|
+
- test/package/rules/webpack.test.js
|
|
277
349
|
- test/package/staging.test.js
|
|
278
350
|
- test/package/test.test.js
|
|
351
|
+
- test/package/transpiler-defaults.test.js
|
|
352
|
+
- test/peer-dependencies.sh
|
|
279
353
|
- test/resolver.js
|
|
354
|
+
- test/scripts/remove-use-strict.test.js
|
|
355
|
+
- test/typescript/build.test.js
|
|
356
|
+
- test/typescript/environments.test.js
|
|
357
|
+
- test/typescript/pathValidation.test.js
|
|
358
|
+
- test/typescript/securityValidation.test.js
|
|
359
|
+
- tools/README.md
|
|
360
|
+
- tools/css-modules-v9-codemod.js
|
|
361
|
+
- tsconfig.eslint.json
|
|
362
|
+
- tsconfig.json
|
|
280
363
|
- yarn.lock
|
|
281
364
|
homepage: https://github.com/shakacode/shakapacker
|
|
282
365
|
licenses:
|
|
283
366
|
- MIT
|
|
284
367
|
metadata:
|
|
285
|
-
source_code_uri: https://github.com/shakacode/shakapacker/tree/
|
|
286
|
-
post_install_message:
|
|
368
|
+
source_code_uri: https://github.com/shakacode/shakapacker/tree/v9.2.0
|
|
287
369
|
rdoc_options: []
|
|
288
370
|
require_paths:
|
|
289
371
|
- lib
|
|
@@ -298,8 +380,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
298
380
|
- !ruby/object:Gem::Version
|
|
299
381
|
version: '0'
|
|
300
382
|
requirements: []
|
|
301
|
-
rubygems_version: 3.
|
|
302
|
-
signing_key:
|
|
383
|
+
rubygems_version: 3.6.7
|
|
303
384
|
specification_version: 4
|
|
304
385
|
summary: Use webpack to manage app-like JavaScript modules in Rails
|
|
305
386
|
test_files:
|
|
@@ -317,11 +398,18 @@ test_files:
|
|
|
317
398
|
- test/package/rules/babel.test.js
|
|
318
399
|
- test/package/rules/esbuild.test.js
|
|
319
400
|
- test/package/rules/file.test.js
|
|
320
|
-
- test/package/rules/index.test.js
|
|
321
401
|
- test/package/rules/raw.test.js
|
|
322
402
|
- test/package/rules/sass.test.js
|
|
323
403
|
- test/package/rules/sass1.test.js
|
|
324
404
|
- test/package/rules/swc.test.js
|
|
405
|
+
- test/package/rules/webpack.test.js
|
|
325
406
|
- test/package/staging.test.js
|
|
326
407
|
- test/package/test.test.js
|
|
408
|
+
- test/package/transpiler-defaults.test.js
|
|
409
|
+
- test/peer-dependencies.sh
|
|
327
410
|
- test/resolver.js
|
|
411
|
+
- test/scripts/remove-use-strict.test.js
|
|
412
|
+
- test/typescript/build.test.js
|
|
413
|
+
- test/typescript/environments.test.js
|
|
414
|
+
- test/typescript/pathValidation.test.js
|
|
415
|
+
- test/typescript/securityValidation.test.js
|
data/package/babel/preset.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const { moduleExists } = require("shakapacker")
|
|
2
|
-
|
|
3
|
-
module.exports = function config(api) {
|
|
4
|
-
const validEnv = ["development", "test", "production"]
|
|
5
|
-
const currentEnv = api.env()
|
|
6
|
-
const isDevelopmentEnv = api.env("development")
|
|
7
|
-
const isProductionEnv = api.env("production")
|
|
8
|
-
const isTestEnv = api.env("test")
|
|
9
|
-
|
|
10
|
-
if (!validEnv.includes(currentEnv)) {
|
|
11
|
-
throw new Error(
|
|
12
|
-
`Please specify a valid NODE_ENV or BABEL_ENV environment variable. Valid values are "development", "test", and "production". Instead, received: "${JSON.stringify(
|
|
13
|
-
currentEnv
|
|
14
|
-
)}".`
|
|
15
|
-
)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return {
|
|
19
|
-
presets: [
|
|
20
|
-
isTestEnv && ["@babel/preset-env", { targets: { node: "current" } }],
|
|
21
|
-
(isProductionEnv || isDevelopmentEnv) && [
|
|
22
|
-
"@babel/preset-env",
|
|
23
|
-
{
|
|
24
|
-
useBuiltIns: "entry",
|
|
25
|
-
corejs: "3.8",
|
|
26
|
-
modules: "auto",
|
|
27
|
-
bugfixes: true,
|
|
28
|
-
exclude: ["transform-typeof-symbol"]
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
moduleExists("@babel/preset-typescript") && "@babel/preset-typescript"
|
|
32
|
-
].filter(Boolean),
|
|
33
|
-
plugins: [["@babel/plugin-transform-runtime", { helpers: false }]].filter(
|
|
34
|
-
Boolean
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
}
|
data/package/config.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
const { resolve } = require("path")
|
|
2
|
-
const { load } = require("js-yaml")
|
|
3
|
-
const { existsSync, readFileSync } = require("fs")
|
|
4
|
-
|
|
5
|
-
const { merge } = require("webpack-merge")
|
|
6
|
-
const { ensureTrailingSlash } = require("./utils/helpers")
|
|
7
|
-
const { railsEnv } = require("./env")
|
|
8
|
-
const configPath = require("./utils/configPath")
|
|
9
|
-
|
|
10
|
-
const defaultConfigPath = require("./utils/defaultConfigPath")
|
|
11
|
-
|
|
12
|
-
const getDefaultConfig = () => {
|
|
13
|
-
const defaultConfig = load(readFileSync(defaultConfigPath), "utf8")
|
|
14
|
-
return defaultConfig[railsEnv] || defaultConfig.production
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const defaults = getDefaultConfig()
|
|
18
|
-
let config
|
|
19
|
-
|
|
20
|
-
if (existsSync(configPath)) {
|
|
21
|
-
const appYmlObject = load(readFileSync(configPath), "utf8")
|
|
22
|
-
const envAppConfig = appYmlObject[railsEnv]
|
|
23
|
-
|
|
24
|
-
if (!envAppConfig) {
|
|
25
|
-
/* eslint no-console:0 */
|
|
26
|
-
console.warn(
|
|
27
|
-
`Warning: ${railsEnv} key not found in the configuration file. Using production configuration as a fallback.`
|
|
28
|
-
)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
config = merge(defaults, envAppConfig || {})
|
|
32
|
-
} else {
|
|
33
|
-
config = merge(defaults, {})
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
config.outputPath = resolve(config.public_root_path, config.public_output_path)
|
|
37
|
-
|
|
38
|
-
// Ensure that the publicPath includes our asset host so dynamic imports
|
|
39
|
-
// (code-splitting chunks and static assets) load from the CDN instead of a relative path.
|
|
40
|
-
const getPublicPath = () => {
|
|
41
|
-
const rootUrl = ensureTrailingSlash(process.env.SHAKAPACKER_ASSET_HOST || "/")
|
|
42
|
-
return `${rootUrl}${config.public_output_path}/`
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
config.publicPath = getPublicPath()
|
|
46
|
-
config.publicPathWithoutCDN = `/${config.public_output_path}/`
|
|
47
|
-
|
|
48
|
-
if (config.manifest_path) {
|
|
49
|
-
config.manifestPath = resolve(config.manifest_path)
|
|
50
|
-
} else {
|
|
51
|
-
config.manifestPath = resolve(config.outputPath, "manifest.json")
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
module.exports = config
|
data/package/env.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
const { load } = require("js-yaml")
|
|
2
|
-
const { readFileSync } = require("fs")
|
|
3
|
-
const defaultConfigPath = require("./utils/defaultConfigPath")
|
|
4
|
-
|
|
5
|
-
const NODE_ENVIRONMENTS = ["development", "production", "test"]
|
|
6
|
-
const DEFAULT = "production"
|
|
7
|
-
const configPath = require("./utils/configPath")
|
|
8
|
-
|
|
9
|
-
const railsEnv = process.env.RAILS_ENV
|
|
10
|
-
const rawNodeEnv = process.env.NODE_ENV
|
|
11
|
-
const nodeEnv =
|
|
12
|
-
rawNodeEnv && NODE_ENVIRONMENTS.includes(rawNodeEnv) ? rawNodeEnv : DEFAULT
|
|
13
|
-
const isProduction = nodeEnv === "production"
|
|
14
|
-
const isDevelopment = nodeEnv === "development"
|
|
15
|
-
|
|
16
|
-
let config
|
|
17
|
-
try {
|
|
18
|
-
config = load(readFileSync(configPath), "utf8")
|
|
19
|
-
} catch (error) {
|
|
20
|
-
if (error.code === "ENOENT") {
|
|
21
|
-
// File not found, use default configuration
|
|
22
|
-
config = load(readFileSync(defaultConfigPath), "utf8")
|
|
23
|
-
} else {
|
|
24
|
-
throw error
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const availableEnvironments = Object.keys(config).join("|")
|
|
29
|
-
const regex = new RegExp(`^(${availableEnvironments})$`, "g")
|
|
30
|
-
|
|
31
|
-
const runningWebpackDevServer = process.env.WEBPACK_SERVE === "true"
|
|
32
|
-
|
|
33
|
-
const validatedRailsEnv = railsEnv && railsEnv.match(regex) ? railsEnv : DEFAULT
|
|
34
|
-
|
|
35
|
-
if (railsEnv && validatedRailsEnv !== railsEnv) {
|
|
36
|
-
/* eslint no-console:0 */
|
|
37
|
-
console.warn(
|
|
38
|
-
`Warning: '${railsEnv}' environment not found in the configuration. Using '${DEFAULT}' configuration as a fallback.`
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
module.exports = {
|
|
43
|
-
railsEnv: validatedRailsEnv,
|
|
44
|
-
nodeEnv,
|
|
45
|
-
isProduction,
|
|
46
|
-
isDevelopment,
|
|
47
|
-
runningWebpackDevServer
|
|
48
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const { merge } = require("webpack-merge")
|
|
2
|
-
|
|
3
|
-
const baseConfig = require("./base")
|
|
4
|
-
const webpackDevServerConfig = require("../webpackDevServerConfig")
|
|
5
|
-
const { runningWebpackDevServer } = require("../env")
|
|
6
|
-
|
|
7
|
-
const devConfig = {
|
|
8
|
-
mode: "development",
|
|
9
|
-
devtool: "cheap-module-source-map",
|
|
10
|
-
...(runningWebpackDevServer && { devServer: webpackDevServerConfig() })
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
module.exports = merge(baseConfig, devConfig)
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/* eslint global-require: 0 */
|
|
2
|
-
/* eslint import/no-dynamic-require: 0 */
|
|
3
|
-
|
|
4
|
-
const { merge } = require("webpack-merge")
|
|
5
|
-
const CompressionPlugin = require("compression-webpack-plugin")
|
|
6
|
-
const TerserPlugin = require("terser-webpack-plugin")
|
|
7
|
-
const baseConfig = require("./base")
|
|
8
|
-
const { moduleExists } = require("../utils/helpers")
|
|
9
|
-
const config = require("../config")
|
|
10
|
-
|
|
11
|
-
const getPlugins = () => {
|
|
12
|
-
const plugins = []
|
|
13
|
-
|
|
14
|
-
plugins.push(
|
|
15
|
-
new CompressionPlugin({
|
|
16
|
-
filename: "[path][base].gz[query]",
|
|
17
|
-
algorithm: "gzip",
|
|
18
|
-
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/
|
|
19
|
-
})
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
if ("brotli" in process.versions) {
|
|
23
|
-
plugins.push(
|
|
24
|
-
new CompressionPlugin({
|
|
25
|
-
filename: "[path][base].br[query]",
|
|
26
|
-
algorithm: "brotliCompress",
|
|
27
|
-
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/
|
|
28
|
-
})
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return plugins
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const tryCssMinimizer = () => {
|
|
36
|
-
if (
|
|
37
|
-
moduleExists("css-loader") &&
|
|
38
|
-
moduleExists("css-minimizer-webpack-plugin")
|
|
39
|
-
) {
|
|
40
|
-
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin")
|
|
41
|
-
return new CssMinimizerPlugin()
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return null
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const productionConfig = {
|
|
48
|
-
devtool: "source-map",
|
|
49
|
-
stats: "normal",
|
|
50
|
-
bail: true,
|
|
51
|
-
plugins: getPlugins(),
|
|
52
|
-
optimization: {
|
|
53
|
-
minimizer: [
|
|
54
|
-
tryCssMinimizer(),
|
|
55
|
-
new TerserPlugin({
|
|
56
|
-
parallel: Number.parseInt(process.env.SHAKAPACKER_PARALLEL, 10) || true,
|
|
57
|
-
terserOptions: {
|
|
58
|
-
parse: {
|
|
59
|
-
// Let terser parse ecma 8 code but always output
|
|
60
|
-
// ES5 compliant code for older browsers
|
|
61
|
-
ecma: 8
|
|
62
|
-
},
|
|
63
|
-
compress: {
|
|
64
|
-
ecma: 5,
|
|
65
|
-
warnings: false,
|
|
66
|
-
comparisons: false
|
|
67
|
-
},
|
|
68
|
-
mangle: { safari10: true },
|
|
69
|
-
output: {
|
|
70
|
-
ecma: 5,
|
|
71
|
-
comments: false,
|
|
72
|
-
ascii_only: true
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
})
|
|
76
|
-
].filter(Boolean)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (config.useContentHash === false) {
|
|
81
|
-
// eslint-disable-next-line no-console
|
|
82
|
-
console.warn(`⚠️ WARNING
|
|
83
|
-
Setting 'useContentHash' to 'false' in the production environment (specified by NODE_ENV environment variable) is not allowed!
|
|
84
|
-
Content hashes get added to the filenames regardless of setting useContentHash in 'shakapacker.yml' to false.
|
|
85
|
-
`)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
module.exports = merge(baseConfig, productionConfig)
|
data/package/esbuild/index.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/* eslint global-require: 0 */
|
|
2
|
-
/* eslint import/no-dynamic-require: 0 */
|
|
3
|
-
|
|
4
|
-
const { resolve } = require("path")
|
|
5
|
-
const { existsSync } = require("fs")
|
|
6
|
-
const { merge } = require("webpack-merge")
|
|
7
|
-
|
|
8
|
-
const getLoaderExtension = (filename) => {
|
|
9
|
-
const matchData = filename.match(/\.([jt]sx?)?(\.erb)?$/)
|
|
10
|
-
|
|
11
|
-
if (!matchData) {
|
|
12
|
-
return "js"
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return matchData[1]
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const getCustomConfig = () => {
|
|
19
|
-
const path = resolve("config", "esbuild.config.js")
|
|
20
|
-
if (existsSync(path)) {
|
|
21
|
-
return require(path)
|
|
22
|
-
}
|
|
23
|
-
return {}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const getEsbuildLoaderConfig = (filenameToProcess) => {
|
|
27
|
-
const customConfig = getCustomConfig()
|
|
28
|
-
const defaultConfig = {
|
|
29
|
-
loader: require.resolve("esbuild-loader"),
|
|
30
|
-
options: {
|
|
31
|
-
loader: getLoaderExtension(filenameToProcess)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return merge(defaultConfig, customConfig)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
module.exports = {
|
|
39
|
-
getEsbuildLoaderConfig
|
|
40
|
-
}
|
data/package/index.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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 baseConfig = require("./environments/base")
|
|
8
|
-
const rules = require("./rules")
|
|
9
|
-
const config = require("./config")
|
|
10
|
-
const devServer = require("./dev_server")
|
|
11
|
-
const env = require("./env")
|
|
12
|
-
const { moduleExists, canProcess } = require("./utils/helpers")
|
|
13
|
-
const inliningCss = require("./utils/inliningCss")
|
|
14
|
-
|
|
15
|
-
const generateWebpackConfig = (extraConfig = {}, ...extraArgs) => {
|
|
16
|
-
if (extraArgs.length > 0) {
|
|
17
|
-
throw new Error(
|
|
18
|
-
"Only one extra config may be passed here - use webpack-merge to merge configs before passing them to Shakapacker"
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const { nodeEnv } = env
|
|
23
|
-
const path = resolve(__dirname, "environments", `${nodeEnv}.js`)
|
|
24
|
-
const environmentConfig = existsSync(path) ? require(path) : baseConfig
|
|
25
|
-
|
|
26
|
-
return webpackMerge.merge({}, environmentConfig, extraConfig)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
module.exports = {
|
|
30
|
-
config, // shakapacker.yml
|
|
31
|
-
devServer,
|
|
32
|
-
generateWebpackConfig,
|
|
33
|
-
baseConfig,
|
|
34
|
-
env,
|
|
35
|
-
rules,
|
|
36
|
-
moduleExists,
|
|
37
|
-
canProcess,
|
|
38
|
-
inliningCss,
|
|
39
|
-
...webpackMerge
|
|
40
|
-
}
|
data/package/rules/css.js
DELETED
data/package/rules/esbuild.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const { loaderMatches } = require("../utils/helpers")
|
|
2
|
-
const { getEsbuildLoaderConfig } = require("../esbuild")
|
|
3
|
-
const { webpack_loader: webpackLoader } = require("../config")
|
|
4
|
-
const jscommon = require("./jscommon")
|
|
5
|
-
|
|
6
|
-
module.exports = loaderMatches(webpackLoader, "esbuild", () => ({
|
|
7
|
-
test: /\.(ts|tsx|js|jsx|mjs|coffee)?(\.erb)?$/,
|
|
8
|
-
...jscommon,
|
|
9
|
-
use: ({ resource }) => getEsbuildLoaderConfig(resource)
|
|
10
|
-
}))
|