shakapacker 9.0.0.beta.7 → 9.0.0.beta.8
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/.eslintrc.fast.js +40 -0
- data/.eslintrc.js +48 -0
- data/.gitignore +1 -3
- data/.npmignore +1 -0
- data/CHANGELOG.md +64 -1
- data/CONTRIBUTING.md +75 -21
- data/Gemfile.lock +1 -1
- data/TODO.md +15 -16
- data/lib/shakapacker/version.rb +1 -1
- data/package/babel/preset.ts +56 -0
- data/package/esbuild/index.ts +42 -0
- data/package/optimization/rspack.ts +36 -0
- data/package/optimization/{webpack.js → webpack.ts} +12 -4
- data/package/plugins/{rspack.js → rspack.ts} +20 -5
- data/package/plugins/{webpack.js → webpack.ts} +2 -2
- data/package/rspack/{index.js → index.ts} +17 -10
- data/package/rules/{babel.js → babel.ts} +1 -1
- data/package/rules/{coffee.js → coffee.ts} +1 -1
- data/package/rules/{css.js → css.ts} +1 -1
- data/package/rules/{erb.js → erb.ts} +1 -1
- data/package/rules/{esbuild.js → esbuild.ts} +2 -2
- data/package/rules/{file.js → file.ts} +11 -6
- data/package/rules/{jscommon.js → jscommon.ts} +4 -4
- data/package/rules/{less.js → less.ts} +3 -3
- data/package/rules/raw.ts +25 -0
- data/package/rules/{rspack.js → rspack.ts} +21 -11
- data/package/rules/{sass.js → sass.ts} +1 -1
- data/package/rules/{stylus.js → stylus.ts} +3 -7
- data/package/rules/{swc.js → swc.ts} +2 -2
- data/package/rules/{webpack.js → webpack.ts} +1 -1
- data/package/swc/index.ts +54 -0
- data/package.json +22 -2
- data/scripts/type-check-no-emit.js +27 -0
- data/test/package/rules/raw.test.js +40 -7
- data/test/package/rules/webpack.test.js +21 -2
- data/tsconfig.eslint.json +16 -0
- data/tsconfig.json +9 -10
- data/yarn.lock +415 -6
- metadata +27 -24
- data/package/babel/preset.js +0 -48
- data/package/esbuild/index.js +0 -40
- data/package/optimization/rspack.js +0 -29
- data/package/rules/raw.js +0 -15
- data/package/swc/index.js +0 -50
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.
|
4
|
+
version: 9.0.0.beta.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -132,6 +132,7 @@ extensions: []
|
|
132
132
|
extra_rdoc_files: []
|
133
133
|
files:
|
134
134
|
- ".eslintignore"
|
135
|
+
- ".eslintrc.fast.js"
|
135
136
|
- ".eslintrc.js"
|
136
137
|
- ".github/FUNDING.yml"
|
137
138
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
@@ -252,7 +253,7 @@ files:
|
|
252
253
|
- lib/tasks/shakapacker/verify_install.rake
|
253
254
|
- package.json
|
254
255
|
- package/.npmignore
|
255
|
-
- package/babel/preset.
|
256
|
+
- package/babel/preset.ts
|
256
257
|
- package/config.ts
|
257
258
|
- package/dev_server.ts
|
258
259
|
- package/env.ts
|
@@ -261,30 +262,30 @@ files:
|
|
261
262
|
- package/environments/production.ts
|
262
263
|
- package/environments/test.ts
|
263
264
|
- package/environments/types.ts
|
264
|
-
- package/esbuild/index.
|
265
|
+
- package/esbuild/index.ts
|
265
266
|
- package/index.d.ts
|
266
267
|
- package/index.ts
|
267
268
|
- package/loaders.d.ts
|
268
|
-
- package/optimization/rspack.
|
269
|
-
- package/optimization/webpack.
|
270
|
-
- package/plugins/rspack.
|
271
|
-
- package/plugins/webpack.
|
272
|
-
- package/rspack/index.
|
273
|
-
- package/rules/babel.
|
274
|
-
- package/rules/coffee.
|
275
|
-
- package/rules/css.
|
276
|
-
- package/rules/erb.
|
277
|
-
- package/rules/esbuild.
|
278
|
-
- package/rules/file.
|
279
|
-
- package/rules/jscommon.
|
280
|
-
- package/rules/less.
|
281
|
-
- package/rules/raw.
|
282
|
-
- package/rules/rspack.
|
283
|
-
- package/rules/sass.
|
284
|
-
- package/rules/stylus.
|
285
|
-
- package/rules/swc.
|
286
|
-
- package/rules/webpack.
|
287
|
-
- package/swc/index.
|
269
|
+
- package/optimization/rspack.ts
|
270
|
+
- package/optimization/webpack.ts
|
271
|
+
- package/plugins/rspack.ts
|
272
|
+
- package/plugins/webpack.ts
|
273
|
+
- package/rspack/index.ts
|
274
|
+
- package/rules/babel.ts
|
275
|
+
- package/rules/coffee.ts
|
276
|
+
- package/rules/css.ts
|
277
|
+
- package/rules/erb.ts
|
278
|
+
- package/rules/esbuild.ts
|
279
|
+
- package/rules/file.ts
|
280
|
+
- package/rules/jscommon.ts
|
281
|
+
- package/rules/less.ts
|
282
|
+
- package/rules/raw.ts
|
283
|
+
- package/rules/rspack.ts
|
284
|
+
- package/rules/sass.ts
|
285
|
+
- package/rules/stylus.ts
|
286
|
+
- package/rules/swc.ts
|
287
|
+
- package/rules/webpack.ts
|
288
|
+
- package/swc/index.ts
|
288
289
|
- package/types.ts
|
289
290
|
- package/types/README.md
|
290
291
|
- package/types/index.ts
|
@@ -305,6 +306,7 @@ files:
|
|
305
306
|
- package/webpackDevServerConfig.ts
|
306
307
|
- prettier.config.js
|
307
308
|
- scripts/remove-use-strict.js
|
309
|
+
- scripts/type-check-no-emit.js
|
308
310
|
- shakapacker.gemspec
|
309
311
|
- test/helpers.js
|
310
312
|
- test/package/config.test.js
|
@@ -337,13 +339,14 @@ files:
|
|
337
339
|
- test/typescript/securityValidation.test.js
|
338
340
|
- tools/README.md
|
339
341
|
- tools/css-modules-v9-codemod.js
|
342
|
+
- tsconfig.eslint.json
|
340
343
|
- tsconfig.json
|
341
344
|
- yarn.lock
|
342
345
|
homepage: https://github.com/shakacode/shakapacker
|
343
346
|
licenses:
|
344
347
|
- MIT
|
345
348
|
metadata:
|
346
|
-
source_code_uri: https://github.com/shakacode/shakapacker/tree/v9.0.0.beta.
|
349
|
+
source_code_uri: https://github.com/shakacode/shakapacker/tree/v9.0.0.beta.8
|
347
350
|
rdoc_options: []
|
348
351
|
require_paths:
|
349
352
|
- lib
|
data/package/babel/preset.js
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
const { moduleExists, packageFullVersion } = require("../utils/helpers")
|
2
|
-
|
3
|
-
const coreJsVersion = () => {
|
4
|
-
try {
|
5
|
-
return packageFullVersion("core-js").match(/^\d+\.\d+/)[0]
|
6
|
-
} catch (e) {
|
7
|
-
if (e.code !== "MODULE_NOT_FOUND") {
|
8
|
-
throw e
|
9
|
-
}
|
10
|
-
|
11
|
-
return "3.8"
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
/** @param api {import("@babel/core").ConfigAPI} */
|
16
|
-
module.exports = function config(api) {
|
17
|
-
const validEnv = ["development", "test", "production"]
|
18
|
-
const currentEnv = api.env()
|
19
|
-
const isDevelopmentEnv = api.env("development")
|
20
|
-
const isProductionEnv = api.env("production")
|
21
|
-
const isTestEnv = api.env("test")
|
22
|
-
|
23
|
-
if (!validEnv.includes(currentEnv)) {
|
24
|
-
throw new Error(
|
25
|
-
`Please specify a valid NODE_ENV or BABEL_ENV environment variable. Valid values are "development", "test", and "production". Instead, received: "${currentEnv}".`
|
26
|
-
)
|
27
|
-
}
|
28
|
-
|
29
|
-
return {
|
30
|
-
presets: [
|
31
|
-
isTestEnv && ["@babel/preset-env", { targets: { node: "current" } }],
|
32
|
-
(isProductionEnv || isDevelopmentEnv) && [
|
33
|
-
"@babel/preset-env",
|
34
|
-
{
|
35
|
-
useBuiltIns: "entry",
|
36
|
-
corejs: coreJsVersion(),
|
37
|
-
modules: "auto",
|
38
|
-
bugfixes: true,
|
39
|
-
exclude: ["transform-typeof-symbol"]
|
40
|
-
}
|
41
|
-
],
|
42
|
-
moduleExists("@babel/preset-typescript") && "@babel/preset-typescript"
|
43
|
-
].filter(Boolean),
|
44
|
-
plugins: [["@babel/plugin-transform-runtime", { helpers: false }]].filter(
|
45
|
-
Boolean
|
46
|
-
)
|
47
|
-
}
|
48
|
-
}
|
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
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
const { requireOrError } = require("../utils/requireOrError")
|
2
|
-
const { error: logError } = require("../utils/debug")
|
3
|
-
|
4
|
-
const rspack = requireOrError("@rspack/core")
|
5
|
-
|
6
|
-
const getOptimization = () => {
|
7
|
-
// Use Rspack's built-in minification instead of terser-webpack-plugin
|
8
|
-
const result = { minimize: true }
|
9
|
-
try {
|
10
|
-
result.minimizer = [
|
11
|
-
new rspack.SwcJsMinimizerRspackPlugin(),
|
12
|
-
new rspack.LightningCssMinimizerRspackPlugin()
|
13
|
-
]
|
14
|
-
} catch (error) {
|
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.`
|
22
|
-
)
|
23
|
-
}
|
24
|
-
return result
|
25
|
-
}
|
26
|
-
|
27
|
-
module.exports = {
|
28
|
-
getOptimization
|
29
|
-
}
|
data/package/rules/raw.js
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
const config = require("../config")
|
2
|
-
|
3
|
-
const rspackRawConfig = () => ({
|
4
|
-
resourceQuery: /raw/,
|
5
|
-
type: "asset/source"
|
6
|
-
})
|
7
|
-
|
8
|
-
const webpackRawConfig = () => ({
|
9
|
-
test: /\.html$/,
|
10
|
-
exclude: /\.(js|mjs|jsx|ts|tsx)$/,
|
11
|
-
type: "asset/source"
|
12
|
-
})
|
13
|
-
|
14
|
-
module.exports =
|
15
|
-
config.assets_bundler === "rspack" ? rspackRawConfig() : webpackRawConfig()
|
data/package/swc/index.js
DELETED
@@ -1,50 +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 isJsxFile = (filename) => !!filename.match(/\.(jsx|tsx)?(\.erb)?$/)
|
9
|
-
|
10
|
-
const isTypescriptFile = (filename) => !!filename.match(/\.(ts|tsx)?(\.erb)?$/)
|
11
|
-
|
12
|
-
const getCustomConfig = () => {
|
13
|
-
const path = resolve("config", "swc.config.js")
|
14
|
-
if (existsSync(path)) {
|
15
|
-
return require(path)
|
16
|
-
}
|
17
|
-
return {}
|
18
|
-
}
|
19
|
-
|
20
|
-
const getSwcLoaderConfig = (filenameToProcess) => {
|
21
|
-
const customConfig = getCustomConfig()
|
22
|
-
const defaultConfig = {
|
23
|
-
loader: require.resolve("swc-loader"),
|
24
|
-
options: {
|
25
|
-
jsc: {
|
26
|
-
parser: {
|
27
|
-
dynamicImport: true,
|
28
|
-
syntax: isTypescriptFile(filenameToProcess)
|
29
|
-
? "typescript"
|
30
|
-
: "ecmascript",
|
31
|
-
[isTypescriptFile(filenameToProcess) ? "tsx" : "jsx"]:
|
32
|
-
isJsxFile(filenameToProcess)
|
33
|
-
},
|
34
|
-
loose: true
|
35
|
-
},
|
36
|
-
sourceMaps: true,
|
37
|
-
env: {
|
38
|
-
coreJs: 3,
|
39
|
-
exclude: ["transform-typeof-symbol"],
|
40
|
-
mode: "entry"
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}
|
44
|
-
|
45
|
-
return merge(defaultConfig, customConfig)
|
46
|
-
}
|
47
|
-
|
48
|
-
module.exports = {
|
49
|
-
getSwcLoaderConfig
|
50
|
-
}
|