-
Notifications
You must be signed in to change notification settings - Fork 774
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add fs-extra/esm ESM named import module, with just fs-extra methods
Fixes #746
- Loading branch information
Showing
4 changed files
with
220 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import _copy from './copy/index.js' | ||
import _empty from './empty/index.js' | ||
import _ensure from './ensure/index.js' | ||
import _json from './json/index.js' | ||
import _mkdirs from './mkdirs/index.js' | ||
import _move from './move/index.js' | ||
import _outputFile from './output-file/index.js' | ||
import _pathExists from './path-exists/index.js' | ||
import _remove from './remove/index.js' | ||
|
||
// NOTE: Only exports fs-extra's functions; fs functions must be imported from "node:fs" or "node:fs/promises" | ||
|
||
export const copy = _copy.copy | ||
export const copySync = _copy.copySync | ||
export const emptyDirSync = _empty.emptyDirSync | ||
export const emptydirSync = _empty.emptydirSync | ||
export const emptyDir = _empty.emptyDir | ||
export const emptydir = _empty.emptydir | ||
export const createFile = _ensure.createFile | ||
export const createFileSync = _ensure.createFileSync | ||
export const ensureFile = _ensure.ensureFile | ||
export const ensureFileSync = _ensure.ensureFileSync | ||
export const createLink = _ensure.createLink | ||
export const createLinkSync = _ensure.createLinkSync | ||
export const ensureLink = _ensure.ensureLink | ||
export const ensureLinkSync = _ensure.ensureLinkSync | ||
export const createSymlink = _ensure.createSymlink | ||
export const createSymlinkSync = _ensure.createSymlinkSync | ||
export const ensureSymlink = _ensure.ensureSymlink | ||
export const ensureSymlinkSync = _ensure.ensureSymlinkSync | ||
export const readJson = _json.readJson | ||
export const readJSON = _json.readJSON | ||
export const readJsonSync = _json.readJsonSync | ||
export const readJSONSync = _json.readJSONSync | ||
export const writeJson = _json.writeJson | ||
export const writeJSON = _json.writeJSON | ||
export const writeJsonSync = _json.writeJsonSync | ||
export const writeJSONSync = _json.writeJSONSync | ||
export const outputJson = _json.outputJson | ||
export const outputJSON = _json.outputJSON | ||
export const outputJsonSync = _json.outputJsonSync | ||
export const outputJSONSync = _json.outputJSONSync | ||
export const mkdirs = _mkdirs.mkdirs | ||
export const mkdirsSync = _mkdirs.mkdirsSync | ||
export const mkdirp = _mkdirs.mkdirp | ||
export const mkdirpSync = _mkdirs.mkdirpSync | ||
export const ensureDir = _mkdirs.ensureDir | ||
export const ensureDirSync = _mkdirs.ensureDirSync | ||
export const move = _move.move | ||
export const moveSync = _move.moveSync | ||
export const outputFile = _outputFile.outputFile | ||
export const outputFileSync = _outputFile.outputFileSync | ||
export const pathExists = _pathExists.pathExists | ||
export const pathExistsSync = _pathExists.pathExistsSync | ||
export const remove = _remove.remove | ||
export const removeSync = _remove.removeSync | ||
|
||
export default { | ||
..._copy, | ||
..._empty, | ||
..._ensure, | ||
..._json, | ||
..._mkdirs, | ||
..._move, | ||
..._outputFile, | ||
..._pathExists, | ||
..._remove | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
import assert from 'assert' | ||
import fsLegacy from './lib/index.js' | ||
// NOTE: eslint comments needed because we're importing the same file multiple times | ||
import fsDefault from './lib/esm.mjs' // eslint-disable-line | ||
import * as fsStar from './lib/esm.mjs' | ||
import { | ||
copy, | ||
copySync, | ||
emptyDirSync, | ||
emptydirSync, | ||
emptyDir, | ||
emptydir, | ||
createFile, | ||
createFileSync, | ||
ensureFile, | ||
ensureFileSync, | ||
createLink, | ||
createLinkSync, | ||
ensureLink, | ||
ensureLinkSync, | ||
createSymlink, | ||
createSymlinkSync, | ||
ensureSymlink, | ||
ensureSymlinkSync, | ||
readJson, | ||
readJsonSync, | ||
writeJson, | ||
writeJsonSync, | ||
outputJson, | ||
outputJsonSync, | ||
outputJSON, | ||
outputJSONSync, | ||
writeJSON, | ||
writeJSONSync, | ||
readJSON, | ||
readJSONSync, | ||
mkdirs, | ||
mkdirsSync, | ||
mkdirp, | ||
mkdirpSync, | ||
ensureDir, | ||
ensureDirSync, | ||
move, | ||
moveSync, | ||
outputFile, | ||
outputFileSync, | ||
pathExists, | ||
pathExistsSync, | ||
remove, | ||
removeSync | ||
} from './lib/esm.mjs' // eslint-disable-line | ||
const fsNamed = [ | ||
copy, | ||
copySync, | ||
emptyDirSync, | ||
emptydirSync, | ||
emptyDir, | ||
emptydir, | ||
createFile, | ||
createFileSync, | ||
ensureFile, | ||
ensureFileSync, | ||
createLink, | ||
createLinkSync, | ||
ensureLink, | ||
ensureLinkSync, | ||
createSymlink, | ||
createSymlinkSync, | ||
ensureSymlink, | ||
ensureSymlinkSync, | ||
readJson, | ||
readJsonSync, | ||
writeJson, | ||
writeJsonSync, | ||
outputJson, | ||
outputJsonSync, | ||
outputJSON, | ||
outputJSONSync, | ||
writeJSON, | ||
writeJSONSync, | ||
readJSON, | ||
readJSONSync, | ||
mkdirs, | ||
mkdirsSync, | ||
mkdirp, | ||
mkdirpSync, | ||
ensureDir, | ||
ensureDirSync, | ||
move, | ||
moveSync, | ||
outputFile, | ||
outputFileSync, | ||
pathExists, | ||
pathExistsSync, | ||
remove, | ||
removeSync | ||
] | ||
|
||
const keys = Object.keys(fsDefault) | ||
|
||
assert.deepStrictEqual(Object.values(fsDefault), fsNamed, 'named and default exports should match') | ||
assert.deepStrictEqual( | ||
Object.entries(fsStar) | ||
.filter(([name]) => name !== 'default') // remove "default" property here | ||
.sort(([nameA], [nameB]) => keys.indexOf(nameA) - keys.indexOf(nameB)) // sort for exact match | ||
.map(([name, fn]) => fn), | ||
Object.values(fsDefault), | ||
'star and default exports should match' | ||
) | ||
|
||
// default exports a subset of the legacy implementation, but functions are the same | ||
Object.entries(fsDefault).forEach(([name, fn]) => { | ||
assert.strictEqual(fn, fsLegacy[name], `${name}() should match legacy implementation`) | ||
}) | ||
|
||
console.warn('ESM tests pass!') |