Skip to content

Commit 87bfae7

Browse files
authored
Bump babel and node minimum versions (#956)
* bump node and babel support * remove Babel < 7.12 support * remove make-dir * remove Node 12 from CI matrix
1 parent df28fe3 commit 87bfae7

5 files changed

Lines changed: 93 additions & 93 deletions

File tree

.github/workflows/ci.yml

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ jobs:
88
runs-on: ubuntu-latest
99
steps:
1010
- uses: actions/checkout@v2
11-
- uses: actions/setup-node@v1
11+
- uses: actions/setup-node@v3
1212
with:
13-
node-version: "*"
13+
node-version: latest
1414
- name: Install dependencies
1515
run: yarn
1616
- name: Lint
@@ -20,7 +20,7 @@ jobs:
2020
strategy:
2121
matrix:
2222
os: [ubuntu-latest, windows-latest]
23-
node-version: [12.x, 14.x, 16.x]
23+
node-version: [14.x, 16.x]
2424
webpack-version: [latest, '4']
2525
include:
2626
- node-version: 18.x
@@ -31,7 +31,7 @@ jobs:
3131
steps:
3232
- uses: actions/checkout@v2
3333
- name: Use Node.js ${{ matrix.node-version }}
34-
uses: actions/setup-node@v1
34+
uses: actions/setup-node@v3
3535
with:
3636
node-version: ${{ matrix.node-version }}
3737
- name: Install dependencies
@@ -49,29 +49,4 @@ jobs:
4949
if: ${{ matrix.coverage }}
5050
with:
5151
token: ${{ secrets.CODECOV_TOKEN }}
52-
test-legacy:
53-
name: Test - ubuntu-latest - Node v8.9, Webpack 4
54-
runs-on: ubuntu-latest
55-
env:
56-
YARN_NODE_LINKER: node-modules
57-
steps:
58-
- uses: actions/checkout@v2
59-
- name: Use Node.js latest
60-
uses: actions/setup-node@v1
61-
with:
62-
node-version: '*'
63-
- name: Install dependencies
64-
run: yarn
65-
- name: Install webpack 4
66-
run: yarn add -D webpack@4
67-
- name: Build babel-loader
68-
run: yarn run build
69-
env:
70-
BABEL_ENV: test
71-
- name: Use Node.js 8.9
72-
uses: actions/setup-node@v1
73-
with:
74-
node-version: '8.9'
75-
- name: Run tests for webpack version 4
76-
run: node scripts/test-legacy
7752

package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@
77
],
88
"main": "lib/index.js",
99
"engines": {
10-
"node": ">= 8.9"
10+
"node": ">= 14.15.0"
1111
},
1212
"dependencies": {
13-
"find-cache-dir": "^3.3.1",
13+
"find-cache-dir": "^3.3.2",
1414
"loader-utils": "^2.0.0",
15-
"make-dir": "^3.1.0",
16-
"schema-utils": "^2.6.5"
15+
"schema-utils": "^4.0.0"
1716
},
1817
"peerDependencies": {
19-
"@babel/core": "^7.0.0",
18+
"@babel/core": "^7.12.0",
2019
"webpack": ">=2"
2120
},
2221
"devDependencies": {

src/cache.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
* @see https://github.com/babel/babel-loader/issues/34
88
* @see https://github.com/babel/babel-loader/pull/41
99
*/
10-
const fs = require("fs");
1110
const os = require("os");
1211
const path = require("path");
1312
const zlib = require("zlib");
1413
const crypto = require("crypto");
1514
const findCacheDir = require("find-cache-dir");
1615
const { promisify } = require("util");
16+
const { readFile, writeFile, mkdir } = require("node:fs/promises");
1717

1818
const transform = require("./transform");
1919
// Lazily instantiated when needed
@@ -27,11 +27,8 @@ try {
2727
hashType = "md5";
2828
}
2929

30-
const readFile = promisify(fs.readFile);
31-
const writeFile = promisify(fs.writeFile);
3230
const gunzip = promisify(zlib.gunzip);
3331
const gzip = promisify(zlib.gzip);
34-
const makeDir = require("make-dir");
3532

3633
/**
3734
* Read the contents from the compressed file.
@@ -108,7 +105,8 @@ const handleCache = async function (directory, params) {
108105

109106
// Make sure the directory exists.
110107
try {
111-
await makeDir(directory);
108+
// overwrite directory if exists
109+
await mkdir(directory, { recursive: true });
112110
} catch (err) {
113111
if (fallback) {
114112
return handleCache(os.tmpdir(), params);

src/index.js

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ try {
44
} catch (err) {
55
if (err.code === "MODULE_NOT_FOUND") {
66
err.message +=
7-
"\n babel-loader@8 requires Babel 7.x (the package '@babel/core'). " +
7+
"\n babel-loader@9 requires Babel 7.12+ (the package '@babel/core'). " +
88
"If you'd like to use Babel 6.x ('babel-core'), you should install 'babel-loader@7'.";
99
}
1010
throw err;
@@ -14,7 +14,7 @@ try {
1414
// people useful feedback if they try to use it alongside babel-loader.
1515
if (/^6\./.test(babel.version)) {
1616
throw new Error(
17-
"\n babel-loader@8 will not work with the '@babel/core@6' bridge package. " +
17+
"\n babel-loader@9 will not work with the '@babel/core@6' bridge package. " +
1818
"If you want to use Babel 6.x, install 'babel-loader@7'.",
1919
);
2020
}
@@ -27,7 +27,7 @@ const schema = require("./schema");
2727

2828
const { isAbsolute } = require("path");
2929
const loaderUtils = require("loader-utils");
30-
const validateOptions = require("schema-utils");
30+
const validateOptions = require("schema-utils").validate;
3131

3232
function subscribe(subscriber, metadata, context) {
3333
if (context[subscriber]) {
@@ -151,17 +151,7 @@ async function loader(source, inputSourceMap, overrides) {
151151
delete programmaticOptions.cacheCompression;
152152
delete programmaticOptions.metadataSubscribers;
153153

154-
if (!babel.loadPartialConfig) {
155-
throw new Error(
156-
`babel-loader ^8.0.0-beta.3 requires @babel/core@7.0.0-beta.41, but ` +
157-
`you appear to be using "${babel.version}". Either update your ` +
158-
`@babel/core version, or pin you babel-loader version to 8.0.0-beta.2`,
159-
);
160-
}
161-
162-
// babel.loadPartialConfigAsync is available in v7.8.0+
163-
const { loadPartialConfigAsync = babel.loadPartialConfig } = babel;
164-
const config = await loadPartialConfigAsync(
154+
const config = await babel.loadPartialConfigAsync(
165155
injectCaller(programmaticOptions, this.target),
166156
);
167157
if (config) {
@@ -209,20 +199,7 @@ async function loader(source, inputSourceMap, overrides) {
209199
result = await transform(source, options);
210200
}
211201

212-
// Availabe since Babel 7.12
213-
// https://github.com/babel/babel/pull/11907
214-
if (config.files) {
215-
config.files.forEach(configFile => this.addDependency(configFile));
216-
} else {
217-
// .babelrc.json
218-
if (typeof config.babelrc === "string") {
219-
this.addDependency(config.babelrc);
220-
}
221-
// babel.config.js
222-
if (config.config) {
223-
this.addDependency(config.config);
224-
}
225-
}
202+
config.files.forEach(configFile => this.addDependency(configFile));
226203

227204
if (result) {
228205
if (overrides && overrides.result) {

yarn.lock

Lines changed: 77 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,10 +1461,10 @@ __metadata:
14611461
languageName: node
14621462
linkType: hard
14631463

1464-
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6":
1465-
version: 7.0.6
1466-
resolution: "@types/json-schema@npm:7.0.6"
1467-
checksum: 3b1e5e049b065a41d2bc1f0c16e01dac5a4a1276bbe8b413657298f574d64a955d3b10bec9e7796fde0927f307e6fedbac1cf4da3604593c431899eea3ad0756
1464+
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.9":
1465+
version: 7.0.11
1466+
resolution: "@types/json-schema@npm:7.0.11"
1467+
checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d
14681468
languageName: node
14691469
linkType: hard
14701470

@@ -1749,6 +1749,20 @@ __metadata:
17491749
languageName: node
17501750
linkType: hard
17511751

1752+
"ajv-formats@npm:^2.1.1":
1753+
version: 2.1.1
1754+
resolution: "ajv-formats@npm:2.1.1"
1755+
dependencies:
1756+
ajv: ^8.0.0
1757+
peerDependencies:
1758+
ajv: ^8.0.0
1759+
peerDependenciesMeta:
1760+
ajv:
1761+
optional: true
1762+
checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7
1763+
languageName: node
1764+
linkType: hard
1765+
17521766
"ajv-keywords@npm:^3.5.2":
17531767
version: 3.5.2
17541768
resolution: "ajv-keywords@npm:3.5.2"
@@ -1758,6 +1772,17 @@ __metadata:
17581772
languageName: node
17591773
linkType: hard
17601774

1775+
"ajv-keywords@npm:^5.0.0":
1776+
version: 5.1.0
1777+
resolution: "ajv-keywords@npm:5.1.0"
1778+
dependencies:
1779+
fast-deep-equal: ^3.1.3
1780+
peerDependencies:
1781+
ajv: ^8.8.2
1782+
checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421
1783+
languageName: node
1784+
linkType: hard
1785+
17611786
"ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5":
17621787
version: 6.12.6
17631788
resolution: "ajv@npm:6.12.6"
@@ -1770,6 +1795,18 @@ __metadata:
17701795
languageName: node
17711796
linkType: hard
17721797

1798+
"ajv@npm:^8.0.0, ajv@npm:^8.8.0":
1799+
version: 8.11.0
1800+
resolution: "ajv@npm:8.11.0"
1801+
dependencies:
1802+
fast-deep-equal: ^3.1.1
1803+
json-schema-traverse: ^1.0.0
1804+
require-from-string: ^2.0.2
1805+
uri-js: ^4.2.2
1806+
checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef
1807+
languageName: node
1808+
linkType: hard
1809+
17731810
"ansi-align@npm:^3.0.0":
17741811
version: 3.0.0
17751812
resolution: "ansi-align@npm:3.0.0"
@@ -2140,23 +2177,22 @@ __metadata:
21402177
eslint-config-prettier: ^6.3.0
21412178
eslint-plugin-flowtype: ^5.2.0
21422179
eslint-plugin-prettier: ^3.0.0
2143-
find-cache-dir: ^3.3.1
2180+
find-cache-dir: ^3.3.2
21442181
husky: ^4.3.0
21452182
lint-staged: ^10.5.1
21462183
loader-utils: ^2.0.0
2147-
make-dir: ^3.1.0
21482184
nyc: ^15.1.0
21492185
pnp-webpack-plugin: ^1.6.4
21502186
prettier: ^2.1.2
21512187
react: ^17.0.1
21522188
react-intl: ^5.9.4
21532189
react-intl-webpack-plugin: ^0.3.0
21542190
rimraf: ^3.0.0
2155-
schema-utils: ^2.6.5
2191+
schema-utils: ^4.0.0
21562192
semver: 7.3.2
21572193
webpack: ^5.34.0
21582194
peerDependencies:
2159-
"@babel/core": ^7.0.0
2195+
"@babel/core": ^7.12.0
21602196
webpack: ">=2"
21612197
languageName: unknown
21622198
linkType: soft
@@ -3683,7 +3719,7 @@ __metadata:
36833719
languageName: node
36843720
linkType: hard
36853721

3686-
"fast-deep-equal@npm:^3.1.1":
3722+
"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
36873723
version: 3.1.3
36883724
resolution: "fast-deep-equal@npm:3.1.3"
36893725
checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d
@@ -3787,14 +3823,14 @@ __metadata:
37873823
languageName: node
37883824
linkType: hard
37893825

3790-
"find-cache-dir@npm:^3.2.0, find-cache-dir@npm:^3.3.1":
3791-
version: 3.3.1
3792-
resolution: "find-cache-dir@npm:3.3.1"
3826+
"find-cache-dir@npm:^3.2.0, find-cache-dir@npm:^3.3.2":
3827+
version: 3.3.2
3828+
resolution: "find-cache-dir@npm:3.3.2"
37933829
dependencies:
37943830
commondir: ^1.0.1
37953831
make-dir: ^3.0.2
37963832
pkg-dir: ^4.1.0
3797-
checksum: 0f7c22b65e07f9b486b4560227d014fab1e79ffbbfbafb87d113a2e878510bd620ef6fdff090e5248bb2846d28851d19e42bfdc7c50687966acc106328e7abf1
3833+
checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817
37983834
languageName: node
37993835
linkType: hard
38003836

@@ -5051,6 +5087,13 @@ fsevents@~2.1.2:
50515087
languageName: node
50525088
linkType: hard
50535089

5090+
"json-schema-traverse@npm:^1.0.0":
5091+
version: 1.0.0
5092+
resolution: "json-schema-traverse@npm:1.0.0"
5093+
checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad
5094+
languageName: node
5095+
linkType: hard
5096+
50545097
"json-schema@npm:0.2.3":
50555098
version: 0.2.3
50565099
resolution: "json-schema@npm:0.2.3"
@@ -5346,7 +5389,7 @@ fsevents@~2.1.2:
53465389
languageName: node
53475390
linkType: hard
53485391

5349-
"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0":
5392+
"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2":
53505393
version: 3.1.0
53515394
resolution: "make-dir@npm:3.1.0"
53525395
dependencies:
@@ -6608,6 +6651,13 @@ fsevents@~2.1.2:
66086651
languageName: node
66096652
linkType: hard
66106653

6654+
"require-from-string@npm:^2.0.2":
6655+
version: 2.0.2
6656+
resolution: "require-from-string@npm:2.0.2"
6657+
checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b
6658+
languageName: node
6659+
linkType: hard
6660+
66116661
"require-main-filename@npm:^2.0.0":
66126662
version: 2.0.0
66136663
resolution: "require-main-filename@npm:2.0.0"
@@ -6766,7 +6816,19 @@ fsevents@~2.1.2:
67666816
languageName: node
67676817
linkType: hard
67686818

6769-
"schema-utils@npm:*, schema-utils@npm:^3.0.0":
6819+
"schema-utils@npm:*, schema-utils@npm:^4.0.0":
6820+
version: 4.0.0
6821+
resolution: "schema-utils@npm:4.0.0"
6822+
dependencies:
6823+
"@types/json-schema": ^7.0.9
6824+
ajv: ^8.8.0
6825+
ajv-formats: ^2.1.1
6826+
ajv-keywords: ^5.0.0
6827+
checksum: c843e92fdd1a5c145dbb6ffdae33e501867f9703afac67bdf35a685e49f85b1dcc10ea250033175a64bd9d31f0555bc6785b8359da0c90bcea30cf6dfbb55a8f
6828+
languageName: node
6829+
linkType: hard
6830+
6831+
"schema-utils@npm:^3.0.0":
67706832
version: 3.0.0
67716833
resolution: "schema-utils@npm:3.0.0"
67726834
dependencies:
@@ -6777,17 +6839,6 @@ fsevents@~2.1.2:
67776839
languageName: node
67786840
linkType: hard
67796841

6780-
"schema-utils@npm:^2.6.5":
6781-
version: 2.7.1
6782-
resolution: "schema-utils@npm:2.7.1"
6783-
dependencies:
6784-
"@types/json-schema": ^7.0.5
6785-
ajv: ^6.12.4
6786-
ajv-keywords: ^3.5.2
6787-
checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b
6788-
languageName: node
6789-
linkType: hard
6790-
67916842
"semver-compare@npm:^1.0.0":
67926843
version: 1.0.0
67936844
resolution: "semver-compare@npm:1.0.0"

0 commit comments

Comments
 (0)