shakapacker 8.0.1 → 8.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/Gemfile.lock +1 -1
- data/__mocks__/nonexistent/package.json +4 -0
- data/__mocks__/sass-loader/package.json +4 -0
- data/docs/using_esbuild_loader.md +1 -1
- data/jest.config.js +2 -1
- data/lib/shakapacker/version.rb +1 -1
- data/package/rules/sass.js +8 -6
- data/package/utils/helpers.js +9 -1
- data/package.json +1 -1
- data/test/package/development.test.js +9 -0
- data/test/package/environments/base.test.js +9 -0
- data/test/package/environments/development.test.js +9 -0
- data/test/package/environments/production.test.js +9 -0
- data/test/package/helpers.test.js +11 -0
- data/test/package/index.test.js +9 -0
- data/test/package/production.test.js +9 -0
- data/test/package/rules/index.test.js +9 -0
- data/test/package/rules/sass.test.js +23 -0
- data/test/package/rules/sass1.test.js +23 -0
- data/test/package/staging.test.js +9 -0
- data/test/package/test.test.js +9 -0
- data/test/resolver.js +13 -0
- metadata +13 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9b65b6bcad3c69564cc6e9a1c81ef86586b551cceac4426ff4648388943063
|
4
|
+
data.tar.gz: 764219a7ff3a435f16bf8554f538f56b5d32f29e1849cdf06241504098b5f9c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b45a4a37953a95d40eeaa8382350991058e074157594a8eeb977eace38db31d0c2507db9aec61eb8eea20485e135d68e9e9d688fc8fe094f4672532715ecc01
|
7
|
+
data.tar.gz: b053d207e3e1d56ab2e92987d216212f75e4b6d41d49d6b5bed1ccfdb29d917b94ac4d17220f607253ffc9d335de733089deb1e5aca44dc389a6177168e244da
|
data/CHANGELOG.md
CHANGED
@@ -10,6 +10,12 @@ _next_ branch is for v8 changes
|
|
10
10
|
## [Unreleased]
|
11
11
|
Changes since the last non-beta release.
|
12
12
|
|
13
|
+
### Changed
|
14
|
+
|
15
|
+
- Fix wrong instruction in esbuild loader documentation [PR 504](https://github.com/shakacode/shakapacker/pull/504) by [adriangohjw](https://github.com/adriangohjw)
|
16
|
+
|
17
|
+
## [v8.0.1] - July 10, 2024
|
18
|
+
|
13
19
|
### Changed
|
14
20
|
- Update outdated GitHub Actions to use Node.js 20.0 versions instead [PR 497](https://github.com/shakacode/shakapacker/pull/497) by [adriangohjw](https://github.com/adriangohjw).
|
15
21
|
- Allow `webpack-merge` v6 to be used [PR 502](https://github.com/shakacode/shakapacker/pull/502) by [G-Rath](https://github.com/g-rath).
|
@@ -380,7 +386,8 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
380
386
|
## v5.4.3 and prior changes from rails/webpacker
|
381
387
|
See [CHANGELOG.md in rails/webpacker (up to v5.4.3)](https://github.com/rails/webpacker/blob/master/CHANGELOG.md)
|
382
388
|
|
383
|
-
[Unreleased]: https://github.com/shakacode/shakapacker/compare/v8.0.
|
389
|
+
[Unreleased]: https://github.com/shakacode/shakapacker/compare/v8.0.1...main
|
390
|
+
[v8.0.1]: https://github.com/shakacode/shakapacker/compare/v8.0.0...v8.0.1
|
384
391
|
[v8.0.0]: https://github.com/shakacode/shakapacker/compare/v7.2.3...v8.0.0
|
385
392
|
[v7.2.3]: https://github.com/shakacode/shakapacker/compare/v7.2.2...v7.2.3
|
386
393
|
[v7.2.2]: https://github.com/shakacode/shakapacker/compare/v7.2.1...v7.2.2
|
data/Gemfile.lock
CHANGED
@@ -27,7 +27,7 @@ To use esbuild as your transpiler today. You need to do two things:
|
|
27
27
|
npm install esbuild esbuild-loader
|
28
28
|
```
|
29
29
|
|
30
|
-
2. Add or change `
|
30
|
+
2. Add or change `webpack_loader` value in your default `shakapacker.yml` config to `esbuild`
|
31
31
|
The default configuration of babel is done by using `package.json` to use the file within the `shakapacker` package.
|
32
32
|
|
33
33
|
```yml
|
data/jest.config.js
CHANGED
data/lib/shakapacker/version.rb
CHANGED
data/package/rules/sass.js
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
/* eslint global-require: 0 */
|
2
2
|
|
3
3
|
const getStyleRule = require("../utils/getStyleRule")
|
4
|
-
const { canProcess } = require("../utils/helpers")
|
5
|
-
const { additional_paths:
|
4
|
+
const { canProcess, packageMajorVersion } = require("../utils/helpers")
|
5
|
+
const { additional_paths: extraPaths } = require("../config")
|
6
6
|
|
7
|
-
module.exports = canProcess("sass-loader", (resolvedPath) =>
|
8
|
-
|
7
|
+
module.exports = canProcess("sass-loader", (resolvedPath) => {
|
8
|
+
const optionKey =
|
9
|
+
packageMajorVersion("sass-loader") > 15 ? "loadPaths" : "includePaths"
|
10
|
+
return getStyleRule(/\.(scss|sass)(\.erb)?$/i, [
|
9
11
|
{
|
10
12
|
loader: resolvedPath,
|
11
13
|
options: {
|
12
|
-
sassOptions: {
|
14
|
+
sassOptions: { [optionKey]: extraPaths }
|
13
15
|
}
|
14
16
|
}
|
15
17
|
])
|
16
|
-
)
|
18
|
+
})
|
data/package/utils/helpers.js
CHANGED
@@ -41,10 +41,18 @@ const loaderMatches = (configLoader, loaderToCheck, fn) => {
|
|
41
41
|
return fn()
|
42
42
|
}
|
43
43
|
|
44
|
+
const packageMajorVersion = (packageName) => {
|
45
|
+
// eslint-disable-next-line import/no-dynamic-require
|
46
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`)
|
47
|
+
// eslint-disable-next-line import/no-dynamic-require, global-require
|
48
|
+
return require(packageJsonPath).version.match(/^\d+/)[0]
|
49
|
+
}
|
50
|
+
|
44
51
|
module.exports = {
|
45
52
|
isBoolean,
|
46
53
|
ensureTrailingSlash,
|
47
54
|
canProcess,
|
48
55
|
moduleExists,
|
49
|
-
loaderMatches
|
56
|
+
loaderMatches,
|
57
|
+
packageMajorVersion
|
50
58
|
}
|
data/package.json
CHANGED
@@ -4,6 +4,15 @@ const { chdirTestApp, resetEnv } = require("../helpers")
|
|
4
4
|
const rootPath = process.cwd()
|
5
5
|
chdirTestApp()
|
6
6
|
|
7
|
+
jest.mock("../../package/utils/helpers", () => {
|
8
|
+
const original = jest.requireActual("../../package/utils/helpers")
|
9
|
+
const moduleExists = () => false
|
10
|
+
return {
|
11
|
+
...original,
|
12
|
+
moduleExists
|
13
|
+
}
|
14
|
+
})
|
15
|
+
|
7
16
|
describe("Development environment", () => {
|
8
17
|
beforeEach(() => jest.resetModules() && resetEnv())
|
9
18
|
afterAll(() => process.chdir(rootPath))
|
@@ -10,6 +10,15 @@ chdirTestApp()
|
|
10
10
|
const baseConfig = require("../../../package/environments/base")
|
11
11
|
const config = require("../../../package/config")
|
12
12
|
|
13
|
+
jest.mock("../../../package/utils/helpers", () => {
|
14
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
15
|
+
const moduleExists = () => false
|
16
|
+
return {
|
17
|
+
...original,
|
18
|
+
moduleExists
|
19
|
+
}
|
20
|
+
})
|
21
|
+
|
13
22
|
describe("Base config", () => {
|
14
23
|
beforeEach(() => jest.resetModules() && resetEnv())
|
15
24
|
afterAll(() => process.chdir(rootPath))
|
@@ -3,6 +3,15 @@ const { chdirTestApp, resetEnv } = require("../../helpers")
|
|
3
3
|
const rootPath = process.cwd()
|
4
4
|
chdirTestApp()
|
5
5
|
|
6
|
+
jest.mock("../../../package/utils/helpers", () => {
|
7
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
8
|
+
const moduleExists = () => false
|
9
|
+
return {
|
10
|
+
...original,
|
11
|
+
moduleExists
|
12
|
+
}
|
13
|
+
})
|
14
|
+
|
6
15
|
describe("Development specific config", () => {
|
7
16
|
beforeEach(() => {
|
8
17
|
jest.resetModules()
|
@@ -3,6 +3,15 @@ const { chdirTestApp, resetEnv } = require("../../helpers")
|
|
3
3
|
const rootPath = process.cwd()
|
4
4
|
chdirTestApp()
|
5
5
|
|
6
|
+
jest.mock("../../../package/utils/helpers", () => {
|
7
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
8
|
+
const moduleExists = () => false
|
9
|
+
return {
|
10
|
+
...original,
|
11
|
+
moduleExists
|
12
|
+
}
|
13
|
+
})
|
14
|
+
|
6
15
|
describe("Production specific config", () => {
|
7
16
|
beforeEach(() => {
|
8
17
|
jest.resetModules()
|
@@ -0,0 +1,11 @@
|
|
1
|
+
const { packageMajorVersion } = require("../../package/utils/helpers")
|
2
|
+
|
3
|
+
describe("packageMajorVersion", () => {
|
4
|
+
test("should find that sass-loader is v16", () => {
|
5
|
+
expect(packageMajorVersion("sass-loader")).toBe("16")
|
6
|
+
})
|
7
|
+
|
8
|
+
test("should find that nonexistent is v12", () => {
|
9
|
+
expect(packageMajorVersion("nonexistent")).toBe("12")
|
10
|
+
})
|
11
|
+
})
|
data/test/package/index.test.js
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
const index = require("../../package/index")
|
2
2
|
|
3
|
+
jest.mock("../../package/utils/helpers", () => {
|
4
|
+
const original = jest.requireActual("../../package/utils/helpers")
|
5
|
+
const moduleExists = () => false
|
6
|
+
return {
|
7
|
+
...original,
|
8
|
+
moduleExists
|
9
|
+
}
|
10
|
+
})
|
11
|
+
|
3
12
|
describe("index", () => {
|
4
13
|
test("exports webpack-merge v5 functions", () => {
|
5
14
|
expect(index.merge).toBeInstanceOf(Function)
|
@@ -4,6 +4,15 @@ const { chdirTestApp } = require("../helpers")
|
|
4
4
|
const rootPath = process.cwd()
|
5
5
|
chdirTestApp()
|
6
6
|
|
7
|
+
jest.mock("../../package/utils/helpers", () => {
|
8
|
+
const original = jest.requireActual("../../package/utils/helpers")
|
9
|
+
const moduleExists = () => false
|
10
|
+
return {
|
11
|
+
...original,
|
12
|
+
moduleExists
|
13
|
+
}
|
14
|
+
})
|
15
|
+
|
7
16
|
describe("Production environment", () => {
|
8
17
|
afterAll(() => process.chdir(rootPath))
|
9
18
|
|
@@ -1,5 +1,14 @@
|
|
1
1
|
const rules = require("../../../package/rules/index")
|
2
2
|
|
3
|
+
jest.mock("../../../package/utils/helpers", () => {
|
4
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
5
|
+
const moduleExists = () => false
|
6
|
+
return {
|
7
|
+
...original,
|
8
|
+
moduleExists
|
9
|
+
}
|
10
|
+
})
|
11
|
+
|
3
12
|
describe("index", () => {
|
4
13
|
test("rule tests are regexes", () => {
|
5
14
|
rules.forEach((rule) => expect(rule.test instanceof RegExp).toBe(true))
|
@@ -0,0 +1,23 @@
|
|
1
|
+
const sass = require("../../../package/rules/sass")
|
2
|
+
|
3
|
+
jest.mock("../../../package/utils/helpers", () => {
|
4
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
5
|
+
const canProcess = (rule, fn) => {
|
6
|
+
return fn("This path was mocked")
|
7
|
+
}
|
8
|
+
const packageMajorVersion = () => "15"
|
9
|
+
return {
|
10
|
+
...original,
|
11
|
+
canProcess,
|
12
|
+
packageMajorVersion
|
13
|
+
}
|
14
|
+
})
|
15
|
+
|
16
|
+
jest.mock("../../../package/utils/inliningCss", () => true)
|
17
|
+
|
18
|
+
describe("sass rule", () => {
|
19
|
+
test("contains loadPaths as the sassOptions key if sass-loader is v15 or earlier", () => {
|
20
|
+
expect(typeof sass.use[3].options.sassOptions.includePaths).toBe("object")
|
21
|
+
expect(typeof sass.use[3].options.sassOptions.loadPaths).toBe("undefined")
|
22
|
+
})
|
23
|
+
})
|
@@ -0,0 +1,23 @@
|
|
1
|
+
const sass = require("../../../package/rules/sass")
|
2
|
+
|
3
|
+
jest.mock("../../../package/utils/helpers", () => {
|
4
|
+
const original = jest.requireActual("../../../package/utils/helpers")
|
5
|
+
const canProcess = (rule, fn) => {
|
6
|
+
return fn("This path was mocked")
|
7
|
+
}
|
8
|
+
return {
|
9
|
+
...original,
|
10
|
+
canProcess
|
11
|
+
}
|
12
|
+
})
|
13
|
+
|
14
|
+
jest.mock("../../../package/utils/inliningCss", () => true)
|
15
|
+
|
16
|
+
describe("sass rule", () => {
|
17
|
+
test("contains loadPaths as the sassOptions key if sass-loader is v15 or earlier", () => {
|
18
|
+
expect(typeof sass.use[3].options.sassOptions.includePaths).toBe(
|
19
|
+
"undefined"
|
20
|
+
)
|
21
|
+
expect(typeof sass.use[3].options.sassOptions.loadPaths).toBe("object")
|
22
|
+
})
|
23
|
+
})
|
@@ -4,6 +4,15 @@ const { chdirTestApp } = require("../helpers")
|
|
4
4
|
const rootPath = process.cwd()
|
5
5
|
chdirTestApp()
|
6
6
|
|
7
|
+
jest.mock("../../package/utils/helpers", () => {
|
8
|
+
const original = jest.requireActual("../../package/utils/helpers")
|
9
|
+
const moduleExists = () => false
|
10
|
+
return {
|
11
|
+
...original,
|
12
|
+
moduleExists
|
13
|
+
}
|
14
|
+
})
|
15
|
+
|
7
16
|
describe("Custom environment", () => {
|
8
17
|
afterAll(() => process.chdir(rootPath))
|
9
18
|
|
data/test/package/test.test.js
CHANGED
@@ -4,6 +4,15 @@ const { chdirTestApp } = require("../helpers")
|
|
4
4
|
const rootPath = process.cwd()
|
5
5
|
chdirTestApp()
|
6
6
|
|
7
|
+
jest.mock("../../package/utils/helpers", () => {
|
8
|
+
const original = jest.requireActual("../../package/utils/helpers")
|
9
|
+
const moduleExists = () => false
|
10
|
+
return {
|
11
|
+
...original,
|
12
|
+
moduleExists
|
13
|
+
}
|
14
|
+
})
|
15
|
+
|
7
16
|
describe("Test environment", () => {
|
8
17
|
afterAll(() => process.chdir(rootPath))
|
9
18
|
|
data/test/resolver.js
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
const mapping = {
|
2
|
+
"css-loader": "this path was mocked",
|
3
|
+
"sass-loader/package.json": "../../__mocks__/sass-loader/package.json",
|
4
|
+
"nonexistent/package.json": "../../__mocks__/nonexistent/package.json"
|
5
|
+
}
|
6
|
+
|
7
|
+
function resolver(module, options) {
|
8
|
+
// If the path corresponds to a key in the mapping object, returns the fakely resolved path
|
9
|
+
// otherwise it calls the Jest's default resolver
|
10
|
+
return mapping[module] || options.defaultResolver(module, options)
|
11
|
+
}
|
12
|
+
|
13
|
+
module.exports = resolver
|
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: 8.0.
|
4
|
+
version: 8.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-08-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -155,6 +155,8 @@ files:
|
|
155
155
|
- MIT-LICENSE
|
156
156
|
- README.md
|
157
157
|
- Rakefile
|
158
|
+
- __mocks__/nonexistent/package.json
|
159
|
+
- __mocks__/sass-loader/package.json
|
158
160
|
- config/README.md
|
159
161
|
- config/shakapacker.yml
|
160
162
|
- docs/customizing_babel_config.md
|
@@ -261,6 +263,7 @@ files:
|
|
261
263
|
- test/package/environments/base.test.js
|
262
264
|
- test/package/environments/development.test.js
|
263
265
|
- test/package/environments/production.test.js
|
266
|
+
- test/package/helpers.test.js
|
264
267
|
- test/package/index.test.js
|
265
268
|
- test/package/production.test.js
|
266
269
|
- test/package/rules/babel.test.js
|
@@ -268,15 +271,18 @@ files:
|
|
268
271
|
- test/package/rules/file.test.js
|
269
272
|
- test/package/rules/index.test.js
|
270
273
|
- test/package/rules/raw.test.js
|
274
|
+
- test/package/rules/sass.test.js
|
275
|
+
- test/package/rules/sass1.test.js
|
271
276
|
- test/package/rules/swc.test.js
|
272
277
|
- test/package/staging.test.js
|
273
278
|
- test/package/test.test.js
|
279
|
+
- test/resolver.js
|
274
280
|
- yarn.lock
|
275
281
|
homepage: https://github.com/shakacode/shakapacker
|
276
282
|
licenses:
|
277
283
|
- MIT
|
278
284
|
metadata:
|
279
|
-
source_code_uri: https://github.com/shakacode/shakapacker/tree/v8.0.
|
285
|
+
source_code_uri: https://github.com/shakacode/shakapacker/tree/v8.0.2
|
280
286
|
post_install_message:
|
281
287
|
rdoc_options: []
|
282
288
|
require_paths:
|
@@ -305,6 +311,7 @@ test_files:
|
|
305
311
|
- test/package/environments/base.test.js
|
306
312
|
- test/package/environments/development.test.js
|
307
313
|
- test/package/environments/production.test.js
|
314
|
+
- test/package/helpers.test.js
|
308
315
|
- test/package/index.test.js
|
309
316
|
- test/package/production.test.js
|
310
317
|
- test/package/rules/babel.test.js
|
@@ -312,6 +319,9 @@ test_files:
|
|
312
319
|
- test/package/rules/file.test.js
|
313
320
|
- test/package/rules/index.test.js
|
314
321
|
- test/package/rules/raw.test.js
|
322
|
+
- test/package/rules/sass.test.js
|
323
|
+
- test/package/rules/sass1.test.js
|
315
324
|
- test/package/rules/swc.test.js
|
316
325
|
- test/package/staging.test.js
|
317
326
|
- test/package/test.test.js
|
327
|
+
- test/resolver.js
|