Skip to content

Commit 5623ba3

Browse files
authoredOct 31, 2022
BREAKING: Drop Node v12 support; require v14.14+ (#969)
Resolves #968
1 parent 656545c commit 5623ba3

File tree

7 files changed

+19
-339
lines changed

7 files changed

+19
-339
lines changed
 

‎.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
test:
99
strategy:
1010
matrix:
11-
node: [12.x, 13.x, 14.x, 15.x, 16.x, 17.x]
11+
node: [14.x, 16.x, 18.x, 19.x]
1212
os: [ubuntu-latest, macos-latest, windows-latest]
1313
runs-on: ${{ matrix.os }}
1414
steps:

‎lib/fs/__tests__/multi-param.test.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@ const assert = require('assert')
44
const path = require('path')
55
const crypto = require('crypto')
66
const os = require('os')
7-
const atLeastNode = require('at-least-node')
87
const fs = require('../..')
98

109
const SIZE = 1000
1110

12-
// Used for tests on Node 12.9.0+ only
13-
const describeNode12 = atLeastNode('12.9.0') ? describe : describe.skip
14-
1511
describe('fs.read()', () => {
1612
let TEST_FILE
1713
let TEST_DATA
@@ -153,7 +149,7 @@ describe('fs.write()', () => {
153149
})
154150
})
155151

156-
describeNode12('fs.writev()', () => {
152+
describe('fs.writev()', () => {
157153
let TEST_FILE
158154
let TEST_DATA
159155
let TEST_FD

‎lib/fs/__tests__/rm.test.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@ const fse = require('../..')
44
const os = require('os')
55
const path = require('path')
66
const assert = require('assert')
7-
const atLeastNode = require('at-least-node')
87

98
/* eslint-env mocha */
109

11-
// Used for tests on Node 14.14.0+ only
12-
const describeNode14 = atLeastNode('14.14.0') ? describe : describe.skip
13-
14-
describeNode14('fs.rm', () => {
10+
describe('fs.rm', () => {
1511
let TEST_FILE
1612

1713
beforeEach(done => {

‎lib/fs/index.js

+13-17
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ const api = [
4141
'writeFile'
4242
].filter(key => {
4343
// Some commands are not available on some systems. Ex:
44-
// fs.opendir was added in Node.js v12.12.0
45-
// fs.rm was added in Node.js v14.14.0
44+
// fs.cp was added in Node.js v16.7.0
4645
// fs.lchown is not available on at least some Linux
4746
return typeof fs[key] === 'function'
4847
})
@@ -98,23 +97,20 @@ exports.write = function (fd, buffer, ...args) {
9897
})
9998
}
10099

101-
// fs.writev only available in Node v12.9.0+
102-
if (typeof fs.writev === 'function') {
103-
// Function signature is
104-
// s.writev(fd, buffers[, position], callback)
105-
// We need to handle the optional arg, so we use ...args
106-
exports.writev = function (fd, buffers, ...args) {
107-
if (typeof args[args.length - 1] === 'function') {
108-
return fs.writev(fd, buffers, ...args)
109-
}
100+
// Function signature is
101+
// s.writev(fd, buffers[, position], callback)
102+
// We need to handle the optional arg, so we use ...args
103+
exports.writev = function (fd, buffers, ...args) {
104+
if (typeof args[args.length - 1] === 'function') {
105+
return fs.writev(fd, buffers, ...args)
106+
}
110107

111-
return new Promise((resolve, reject) => {
112-
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {
113-
if (err) return reject(err)
114-
resolve({ bytesWritten, buffers })
115-
})
108+
return new Promise((resolve, reject) => {
109+
fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {
110+
if (err) return reject(err)
111+
resolve({ bytesWritten, buffers })
116112
})
117-
}
113+
})
118114
}
119115

120116
// fs.realpath.native sometimes not available if fs is monkey-patched

‎lib/remove/index.js

+2-7
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
const fs = require('graceful-fs')
44
const u = require('universalify').fromCallback
5-
const rimraf = require('./rimraf')
65

76
function remove (path, callback) {
8-
// Node 14.14.0+
9-
if (fs.rm) return fs.rm(path, { recursive: true, force: true }, callback)
10-
rimraf(path, callback)
7+
fs.rm(path, { recursive: true, force: true }, callback)
118
}
129

1310
function removeSync (path) {
14-
// Node 14.14.0+
15-
if (fs.rmSync) return fs.rmSync(path, { recursive: true, force: true })
16-
rimraf.sync(path)
11+
fs.rmSync(path, { recursive: true, force: true })
1712
}
1813

1914
module.exports = {

‎lib/remove/rimraf.js

-302
This file was deleted.

‎package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "10.1.0",
44
"description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.",
55
"engines": {
6-
"node": ">=12"
6+
"node": ">=14.14"
77
},
88
"homepage": "https://github.com/jprichardson/node-fs-extra",
99
"repository": {
@@ -42,7 +42,6 @@
4242
"universalify": "^2.0.0"
4343
},
4444
"devDependencies": {
45-
"at-least-node": "^1.0.0",
4645
"klaw": "^2.1.1",
4746
"klaw-sync": "^3.0.2",
4847
"minimist": "^1.1.1",

0 commit comments

Comments
 (0)
Please sign in to comment.