Skip to content

Commit 752456c

Browse files
justin808claude
andcommitted
Add swc-loader support for Shakapacker 9.3.0
Shakapacker 9.3.0 defaults to using SWC as the JavaScript transpiler (20x faster than Babel). This change ensures compatibility by: - Added @swc/core and swc-loader to spec/dummy/package.json devDependencies - Updated generator template shakapacker.yml to use javascript_transpiler: "swc" (new setting name) - Replaced deprecated webpack_loader setting with javascript_transpiler in templates - Updated yarn.lock after installing new dependencies This fixes the webpack build error: "Your Shakapacker config specified using swc, but swc-loader package is not installed" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 3c964b8 commit 752456c

File tree

3 files changed

+94
-2
lines changed

3 files changed

+94
-2
lines changed

lib/generators/react_on_rails/templates/base/base/config/shakapacker.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ default: &default
3636
# Reload manifest.json on all requests so we reload latest compiled packs
3737
cache_manifest: false
3838

39-
# Select loader to use, available options are 'babel' (default), 'swc' or 'esbuild'
40-
webpack_loader: 'babel'
39+
# Select JavaScript transpiler to use
40+
# Available options: 'swc' (default, 20x faster), 'babel', or 'esbuild'
41+
# Note: When using rspack, swc is used automatically regardless of this setting
42+
javascript_transpiler: "swc"
4143

4244
# Raises an error if there is a mismatch in the shakapacker gem and npm package being used
4345
ensure_consistent_versioning: true

spec/dummy/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"regenerator-runtime": "^0.13.4"
3030
},
3131
"devDependencies": {
32+
"@swc/core": "^1.7.0",
3233
"@babel/core": "7.17.9",
3334
"@babel/plugin-transform-runtime": "7.17.0",
3435
"@babel/preset-env": "7",
@@ -53,6 +54,7 @@
5354
"sass-resources-loader": "^2.1.0",
5455
"shakapacker": "9.3.0",
5556
"style-loader": "^3.3.1",
57+
"swc-loader": "^0.2.6",
5658
"terser-webpack-plugin": "5.3.1",
5759
"url-loader": "^4.0.0",
5860
"webpack": "5.72.0",

spec/dummy/yarn.lock

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,6 +1362,87 @@
13621362
dependencies:
13631363
"@sinonjs/commons" "^3.0.0"
13641364

1365+
"@swc/core-darwin-arm64@1.14.0":
1366+
version "1.14.0"
1367+
resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.14.0.tgz#1db614b52ed7369f47be2a1c6b5e80b6be923898"
1368+
integrity sha512-uHPC8rlCt04nvYNczWzKVdgnRhxCa3ndKTBBbBpResOZsRmiwRAvByIGh599j+Oo6Z5eyTPrgY+XfJzVmXnN7Q==
1369+
1370+
"@swc/core-darwin-x64@1.14.0":
1371+
version "1.14.0"
1372+
resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.14.0.tgz#900e56924994d0e723e6088e2a2e1a1c08c59a95"
1373+
integrity sha512-2SHrlpl68vtePRknv9shvM9YKKg7B9T13tcTg9aFCwR318QTYo+FzsKGmQSv9ox/Ua0Q2/5y2BNjieffJoo4nA==
1374+
1375+
"@swc/core-linux-arm-gnueabihf@1.14.0":
1376+
version "1.14.0"
1377+
resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.14.0.tgz#3c84966a8c6e308b0788d1c7875bce23c65134c6"
1378+
integrity sha512-SMH8zn01dxt809svetnxpeg/jWdpi6dqHKO3Eb11u4OzU2PK7I5uKS6gf2hx5LlTbcJMFKULZiVwjlQLe8eqtg==
1379+
1380+
"@swc/core-linux-arm64-gnu@1.14.0":
1381+
version "1.14.0"
1382+
resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.14.0.tgz#5190097d2ca4ea8b198f46a3abe2272331575b54"
1383+
integrity sha512-q2JRu2D8LVqGeHkmpVCljVNltG0tB4o4eYg+dElFwCS8l2Mnt9qurMCxIeo9mgoqz0ax+k7jWtIRHktnVCbjvQ==
1384+
1385+
"@swc/core-linux-arm64-musl@1.14.0":
1386+
version "1.14.0"
1387+
resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.14.0.tgz#420f510102a37feda0e3dfb8d21651515251476b"
1388+
integrity sha512-uofpVoPCEUjYIv454ZEZ3sLgMD17nIwlz2z7bsn7rl301Kt/01umFA7MscUovFfAK2IRGck6XB+uulMu6aFhKQ==
1389+
1390+
"@swc/core-linux-x64-gnu@1.14.0":
1391+
version "1.14.0"
1392+
resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.14.0.tgz#953f741d577a81f6e1e1b434856c48eb674cdeb7"
1393+
integrity sha512-quTTx1Olm05fBfv66DEBuOsOgqdypnZ/1Bh3yGXWY7ANLFeeRpCDZpljD9BSjdsNdPOlwJmEUZXMHtGm3v1TZQ==
1394+
1395+
"@swc/core-linux-x64-musl@1.14.0":
1396+
version "1.14.0"
1397+
resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.14.0.tgz#bdf241062d1433ba617ffe1451dccde8923a28a2"
1398+
integrity sha512-caaNAu+aIqT8seLtCf08i8C3/UC5ttQujUjejhMcuS1/LoCKtNiUs4VekJd2UGt+pyuuSrQ6dKl8CbCfWvWeXw==
1399+
1400+
"@swc/core-win32-arm64-msvc@1.14.0":
1401+
version "1.14.0"
1402+
resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.14.0.tgz#960919015bc31c46a8fc10df5c384add651df91e"
1403+
integrity sha512-EeW3jFlT3YNckJ6V/JnTfGcX7UHGyh6/AiCPopZ1HNaGiXVCKHPpVQZicmtyr/UpqxCXLrTgjHOvyMke7YN26A==
1404+
1405+
"@swc/core-win32-ia32-msvc@1.14.0":
1406+
version "1.14.0"
1407+
resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.14.0.tgz#826a76b2af0e4df4dee3674e91734cb85eb7b21f"
1408+
integrity sha512-dPai3KUIcihV5hfoO4QNQF5HAaw8+2bT7dvi8E5zLtecW2SfL3mUZipzampXq5FHll0RSCLzlrXnSx+dBRZIIQ==
1409+
1410+
"@swc/core-win32-x64-msvc@1.14.0":
1411+
version "1.14.0"
1412+
resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.14.0.tgz#75fe708a702f57f176fd640eb9af394cf767be91"
1413+
integrity sha512-nm+JajGrTqUA6sEHdghDlHMNfH1WKSiuvljhdmBACW4ta4LC3gKurX2qZuiBARvPkephW9V/i5S8QPY1PzFEqg==
1414+
1415+
"@swc/core@^1.7.0":
1416+
version "1.14.0"
1417+
resolved "https://registry.npmjs.org/@swc/core/-/core-1.14.0.tgz#ff7d287fbac6b6fd3adedf7b440cadfd0c389df6"
1418+
integrity sha512-oExhY90bes5pDTVrei0xlMVosTxwd/NMafIpqsC4dMbRYZ5KB981l/CX8tMnGsagTplj/RcG9BeRYmV6/J5m3w==
1419+
dependencies:
1420+
"@swc/counter" "^0.1.3"
1421+
"@swc/types" "^0.1.25"
1422+
optionalDependencies:
1423+
"@swc/core-darwin-arm64" "1.14.0"
1424+
"@swc/core-darwin-x64" "1.14.0"
1425+
"@swc/core-linux-arm-gnueabihf" "1.14.0"
1426+
"@swc/core-linux-arm64-gnu" "1.14.0"
1427+
"@swc/core-linux-arm64-musl" "1.14.0"
1428+
"@swc/core-linux-x64-gnu" "1.14.0"
1429+
"@swc/core-linux-x64-musl" "1.14.0"
1430+
"@swc/core-win32-arm64-msvc" "1.14.0"
1431+
"@swc/core-win32-ia32-msvc" "1.14.0"
1432+
"@swc/core-win32-x64-msvc" "1.14.0"
1433+
1434+
"@swc/counter@^0.1.3":
1435+
version "0.1.3"
1436+
resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
1437+
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
1438+
1439+
"@swc/types@^0.1.25":
1440+
version "0.1.25"
1441+
resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078"
1442+
integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==
1443+
dependencies:
1444+
"@swc/counter" "^0.1.3"
1445+
13651446
"@types/babel__core@^7.1.14":
13661447
version "7.20.5"
13671448
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
@@ -5968,6 +6049,13 @@ supports-preserve-symlinks-flag@^1.0.0:
59686049
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
59696050
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
59706051

6052+
swc-loader@^0.2.6:
6053+
version "0.2.6"
6054+
resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8"
6055+
integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==
6056+
dependencies:
6057+
"@swc/counter" "^0.1.3"
6058+
59716059
symbol-observable@^1.2.0:
59726060
version "1.2.0"
59736061
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"

0 commit comments

Comments
 (0)