67 KiB
10.0.0 / 2021-05-03
Breaking changes
- Require Node.js v12+ (#886, #893, #890, #894, #895)
- Allow copying broken symlinks (#779, #765, #638, #761)
The following changes, although technically semver-major, will not affect the vast majority of users:
- Ensure correct type when destination exists for
ensureLink*()
/ensureSymlink*()
(#826, #786, #870) - Error when attempting to
copy*()
unknown file type (#880) - Remove undocumented options for
remove*()
(#882)
Improvements
- Allow changing case of filenames with
move*()
, even on technically case-insensitive filesystems (#759, #801) - Use native
fs.rm*()
forremove*()
in environments that support it (#882, #806) - Improve
emptyDir()
performance (#885)
Bugfixes
- Ensure
copy*()
'sfilter
function is not called more than necessary (#883, #809) - Fix
move*()
raisingEPERM
error when moving a file to the root of a drive on Windows (#897, #819)
Miscellaneous changes
9.1.0 / 2021-01-19
- Add promise support for
fs.rm()
(#841, #860) - Upgrade universalify for performance improvments (#825)
9.0.1 / 2020-06-03
- Fix issue with
ensureFile()
when used with Jest on Windows (#804, #805) - Remove unneeded
process.umask()
call (#791) - Docs improvements (#753, #795, #797)
9.0.0 / 2020-03-19
Breaking changes
- Requires Node.js version 10 or greater (#725, #751)
- Switched
ensureDir*
to use a fork of https://github.com/sindresorhus/make-dir to make use of native recursivefs.mkdir
where possible (#619, #756) - Properly preserve
atime
forcopy*
withpreserveTimestamps
option (#633)
The following changes, allthough technically breaking, will not affect the vast majority of users:
outputJson
now outputs objects as they were when the function was called, even if they are mutated later (#702, #768)- Cannot pass
null
as an options parameter to*Json*
methods (#745, #768)
Improvements
- Add promise shims for
fs.writev
&fs.opendir
(#747) - Better errors for
ensureFile
(#696, #744) - Better file comparison for older Node versions (#694)
Miscellaneous changes
- Peformance optimizations (#762, #764)
- Add missing documentation for aliases (#758, #766)
- Update
universalify
dependency (#767)
8.1.0 / 2019-06-28
- Add support for promisified
fs.realpath.native
in Node v9.2+ (#650, #682) - Update
graceful-fs
dependency (#700) - Use
graceful-fs
everywhere (#700)
8.0.1 / 2019-05-13
- Fix bug
Maximum call stack size exceeded
error inutil/stat
(#679)
8.0.0 / 2019-05-11
NOTE: Node.js v6 support is deprecated, and will be dropped in the next major release.
- Use
renameSync()
under the hood inmoveSync()
- Fix bug with bind-mounted directories in
copy*()
(#613, #618) - Fix bug in
move()
with case-insensitive file systems - Use
fs.stat()
'sbigint
option incopy*()
&move*()
where possible (#657)
7.0.1 / 2018-11-07
- Fix
removeSync()
on Windows, in some cases, it would error out withENOTEMPTY
(#646) - Document
mode
option forensureDir*()
(#587) - Don't include documentation files in npm package tarball (#642, #643)
7.0.0 / 2018-07-16
- BREAKING: Refine
copy*()
handling of symlinks to properly detect symlinks that point to the same file. (#582) - Fix bug with copying write-protected directories (#600)
- Universalify
fs.lchmod()
(#596) - Add
engines
field topackage.json
(#580)
6.0.1 / 2018-05-09
- Fix
fs.promises
ExperimentalWarning
on Node v10.1.0 (#578)
6.0.0 / 2018-05-01
- Drop support for Node.js versions 4, 5, & 7 (#564)
- Rewrite
move
to usefs.rename
where possible (#549) - Don't convert relative paths to absolute paths for
filter
(#554) copy*
's behavior whenpreserveTimestamps
isfalse
has been OS-dependent since 5.0.0, but that's now explicitly noted in the docs (#563)- Fix subdirectory detection for
copy*
&move*
(#541) - Handle case-insensitive paths correctly in
copy*
(#568)
5.0.0 / 2017-12-11
Significant refactor of copy()
& copySync()
, including breaking changes. No changes to other functions in this release.
Huge thanks to @manidlou for doing most of the work on this release.
- The
filter
option can no longer be a RegExp (must be a function). This was deprecated since fs-extra v1.0.0. #512 copy()
'sfilter
option can now be a function that returns a Promise. #518copy()
©Sync()
now usefs.copyFile()
/fs.copyFileSync()
in environments that support it (currently Node 8.5.0+). Older Node versions still get the old implementation. #505- Don't allow copying a directory into itself. #83
- Handle copying between identical files. #198
- Error out when copying an empty folder to a path that already exists. #464
- Don't create
dest
's parent if thefilter
function aborts thecopy()
operation. #517 - Fix
writeStream
not being closed if there was an error incopy()
. #516
4.0.3 / 2017-12-05
- Fix wrong
chmod
values infs.remove()
#501 - Fix
TypeError
on systems that don't have somefs
operations likelchown
#520
4.0.2 / 2017-09-12
- Added
EOL
option towriteJson*
&outputJson*
(via upgrade to jsonfile v4) - Added promise support to
fs.copyFile()
in Node 8.5+ - Added
.js
extension tomain
field inpackage.json
for better tooling compatibility. #485
4.0.1 / 2017-07-31
Fixed
- Previously,
ensureFile()
&ensureFileSync()
would do nothing if the path was a directory. Now, they error out for consistency withensureDir()
. #465, #466, #470
4.0.0 / 2017-07-14
Changed
- BREAKING: The promisified versions of
fs.read()
&fs.write()
now return objects. See the docs for details. #436, #449 fs.move()
now errors out when destination is a subdirectory of source. #458- Applied upstream fixes from
rimraf
tofs.remove()
&fs.removeSync()
. #459
Fixed
- Got
fs.outputJSONSync()
working again; it was broken due to refactoring. #428
Also clarified the docs in a few places.
3.0.1 / 2017-05-04
- Fix bug in
move()
&moveSync()
when source and destination are the same, and source does not exist. #415
3.0.0 / 2017-04-27
Added
- BREAKING: Added Promise support. All asynchronous native fs methods and fs-extra methods now return a promise if the callback is not passed. #403
pathExists()
, a replacement for the deprecatedfs.exists
.pathExists
has a normal error-first callback signature. Also addedpathExistsSync
, an alias tofs.existsSync
, for completeness. #406
Removed
- BREAKING: Removed support for setting the default spaces for
writeJson()
,writeJsonSync()
,outputJson()
, &outputJsonSync()
. This was undocumented. #402
Changed
- Upgraded jsonfile dependency to v3.0.0:
- BREAKING: Changed behavior of
throws
option forreadJsonSync()
; now does not throw filesystem errors whenthrows
isfalse
.
- BREAKING: Changed behavior of
- BREAKING:
writeJson()
,writeJsonSync()
,outputJson()
, &outputJsonSync()
now output minified JSON by default for consistency withJSON.stringify()
; set thespaces
option to2
to override this new behavior. #402 - Use
Buffer.allocUnsafe()
instead ofnew Buffer()
in environments that support it. #394
Fixed
removeSync()
silently failed on Windows in some cases. Now throws anEBUSY
error. #408
2.1.2 / 2017-03-16
Fixed
- Weird windows bug that resulted in
ensureDir()
's callback being called twice in some cases. This bug may have also affectedremove()
. See #392, #393
2.1.1 / 2017-03-15
Fixed
- Reverted
5597bd
, this broke compatibility with Node.js versions v4+ but less thanv4.5.0
. - Remove
Buffer.alloc()
usage inmoveSync()
.
2.1.0 / 2017-03-15
Thanks to Mani Maghsoudlou (@manidlou) & Jan Peer Stöcklmair (@JPeer264) for their extraordinary help with this release!
Added
moveSync()
See #309, #381. (@manidlou)copy()
andcopySync()
'sfilter
option now gets the destination path passed as the second parameter. #366 (@manidlou)
Changed
- Use
Buffer.alloc()
instead of deprecatednew Buffer()
incopySync()
. #380 (@manidlou) - Refactored entire codebase to use ES6 features supported by Node.js v4+ #355. (@JPeer264)
- Refactored docs. (@manidlou)
Fixed
2.0.0 / 2017-01-16
Removed
- BREAKING: Removed support for Node
v0.12
. The Node foundation stopped officially supporting it on Jan 1st, 2017. - BREAKING: Remove
walk()
andwalkSync()
.walkSync()
was only part offs-extra
for a little over two months. Use klaw instead ofwalk()
, in fact,walk()
was just an alias to klaw. ForwalkSync()
use klaw-sync. See: #338, #339
Changed
- BREAKING: Renamed
clobber
tooverwrite
. This affectscopy()
,copySync()
, andmove()
. #330, #333 - Moved docs, to
docs/
. #340
Fixed
- Apply filters to directories in
copySync()
like incopy()
. #324 - A specific condition when disk is under heavy use,
copy()
can fail. #326
1.0.0 / 2016-11-01
After five years of development, we finally have reach the 1.0.0 milestone! Big thanks goes to Ryan Zim for leading the charge on this release!
Added
walkSync()
Changed
- BREAKING: dropped Node v0.10 support.
- disabled
rimaf
globbing, wasn't used. #280 - deprecate
copy()/copySync()
optionfilter
if it's aRegExp
.filter
should now be a function. - inline
rimraf
. This is temporary and was done becauserimraf
depended upon the beefyglob
whichfs-extra
does not use. #300
Fixed
- bug fix proper closing of file handle on
utimesMillis()
#271 - proper escaping of files with dollar signs #291
copySync()
failed if user didn't own file. #199, #301
0.30.0 / 2016-04-28
- Brought back Node v0.10 support. I didn't realize there was still demand. Official support will end 2016-10-01.
0.29.0 / 2016-04-27
- BREAKING: removed support for Node v0.10. If you still want to use Node v0.10, everything should work except for
ensureLink()/ensureSymlink()
. Node v0.12 is still supported but will be dropped in the near future as well.
0.28.0 / 2016-04-17
- BREAKING: removed
createOutputStream()
. Use https://www.npmjs.com/package/create-output-stream. See: #192 mkdirs()/mkdirsSync()
check for invalid win32 path chars. See: #209, #237mkdirs()/mkdirsSync()
if drive not mounted, error. See: #93
0.27.0 / 2016-04-15
- add
dereference
option tocopySync()
. #235
0.26.7 / 2016-03-16
- fixed
copy()
if source and dest are the same. #230
0.26.6 / 2016-03-15
- fixed if
emptyDir()
does not have a callback: #229
0.26.5 / 2016-01-27
copy()
with two arguments (w/o callback) was broken. See: #215
0.26.4 / 2016-01-05
copySync()
madepreserveTimestamps
default consistent withcopy()
which isfalse
. See: #208
0.26.3 / 2015-12-17
- fixed
copy()
hangup in copying blockDevice / characterDevice //dev/null
. See: #193
0.26.2 / 2015-11-02
- fixed
outputJson{Sync}()
spacing adherence tofs.spaces
0.26.1 / 2015-11-02
- fixed
copySync()
whenclogger=true
and the destination is read only. See: #190
0.26.0 / 2015-10-25
- extracted the
walk()
function into its own moduleklaw
.
0.25.0 / 2015-10-24
- now has a file walker
walk()
0.24.0 / 2015-08-28
- removed alias
delete()
anddeleteSync()
. See: #171
0.23.1 / 2015-08-07
- Better handling of errors for
move()
when moving across devices. #170 ensureSymlink()
andensureLink()
should not throw errors if link exists. #169
0.23.0 / 2015-08-06
- added
ensureLink{Sync}()
andensureSymlink{Sync}()
. See: #165
0.22.1 / 2015-07-09
- Prevent calling
hasMillisResSync()
on module load. See: #149. Fixes regression that was introduced in0.21.0
.
0.22.0 / 2015-07-09
- preserve permissions / ownership in
copy()
. See: #54
0.21.0 / 2015-07-04
- add option to preserve timestamps in
copy()
andcopySync()
. See: #141 - updated
graceful-fs@3.x
to4.x
. This brings in features fromamazing-graceful-fs
(much cleaner code / less hacks)
0.20.1 / 2015-06-23
- fixed regression caused by latest jsonfile update: See: https://github.com/jprichardson/node-jsonfile/issues/26
0.20.0 / 2015-06-19
- removed
jsonfile
aliases withFile
in the name, they weren't documented and probably weren't in use e.g. this package had bothfs.readJsonFile
andfs.readJson
that were aliases to each other, now usefs.readJson
. - preliminary walker created. Intentionally not documented. If you use it, it will almost certainly change and break your code.
- started moving tests inline
- upgraded to
jsonfile@2.1.0
, can now pass JSON revivers/replacers toreadJson()
,writeJson()
,outputJson()
0.19.0 / 2015-06-08
fs.copy()
had support for Node v0.8, dropped support
0.18.4 / 2015-05-22
- fixed license field according to this: #136 and https://github.com/npm/npm/releases/tag/v2.10.0
0.18.3 / 2015-05-08
- bugfix: handle
EEXIST
when clobbering on some Linux systems. #134
0.18.2 / 2015-04-17
- bugfix: allow
F_OK
(#120)
0.18.1 / 2015-04-15
- improved windows support for
move()
a bit.92838980f2
- fixed a lot of tests for Windows (appveyor)
0.18.0 / 2015-03-31
- added
emptyDir()
andemptyDirSync()
0.17.0 / 2015-03-28
copySync
addedclobber
option (before always would clobber, now ifclobber
isfalse
it throws an error if the destination exists). Only works with files at the moment.createOutputStream()
added. See: #118
0.16.5 / 2015-03-08
- fixed
fs.move
whenclobber
istrue
and destination is a directory, it should clobber. #114
0.16.4 / 2015-03-01
fs.mkdirs
fix infinite loop on Windows. See: See https://github.com/substack/node-mkdirp/pull/74 and https://github.com/substack/node-mkdirp/issues/66
0.16.3 / 2015-01-28
- reverted
1ee77c8a80
0.16.2 / 2015-01-28
- fixed
fs.copy
for Node v0.8 (support is temporary and will be removed in the near future)
0.16.1 / 2015-01-28
- if
setImmediate
is not available, fall back toprocess.nextTick
0.16.0 / 2015-01-28
- bugfix
fs.move()
into itself. Closes #104 - bugfix
fs.move()
moving directory across device. Closes #108 - added coveralls support
- bugfix: nasty multiple callback
fs.copy()
bug. Closes #98 - misc fs.copy code cleanups
0.15.0 / 2015-01-21
- dropped
ncp
, imported code in - because of previous, now supports
io.js
graceful-fs
is now a dependency
0.14.0 / 2015-01-05
- changed
copy
/copySync
fromfs.copy(src, dest, [filters], callback)
tofs.copy(src, dest, [options], callback)
#100 - removed mockfs tests for mkdirp (this may be temporary, but was getting in the way of other tests)
0.13.0 / 2014-12-10
- removed
touch
andtouchSync
methods (they didn't handle permissions like UNIX touch) - updated
"ncp": "^0.6.0"
to"ncp": "^1.0.1"
- imported
mkdirp
=>minimist
andmkdirp
are no longer dependences, should now appease people who wantedmkdirp
to be--use_strict
safe. See #59
0.12.0 / 2014-09-22
- copy symlinks in
copySync()
#85
0.11.1 / 2014-09-02
- bugfix
copySync()
preserve file permissions #80
0.11.0 / 2014-08-11
- upgraded
"ncp": "^0.5.1"
to"ncp": "^0.6.0"
- upgrade
jsonfile": "^1.2.0"
tojsonfile": "^2.0.0"
=> on write, json files now have\n
at end. Also addsoptions.throws
toreadJsonSync()
see https://github.com/jprichardson/node-jsonfile#readfilesyncfilename-options for more details.
0.10.0 / 2014-06-29
- bugfix: upgaded
"jsonfile": "~1.1.0"
to"jsonfile": "^1.2.0"
, bumped minor because ofjsonfile
dep change from~
to^
. #67
0.9.1 / 2014-05-22
- removed Node.js
0.8.x
support,0.9.0
was published moments ago and should have been done there
0.9.0 / 2014-05-22
- upgraded
ncp
from~0.4.2
to^0.5.1
, #58 - upgraded
rimraf
from~2.2.6
to^2.2.8
- upgraded
mkdirp
from0.3.x
to^0.5.0
- added methods
ensureFile()
,ensureFileSync()
- added methods
ensureDir()
,ensureDirSync()
#31 - added
move()
method. From: https://github.com/andrewrk/node-mv
0.8.1 / 2013-10-24
0.8.0 / 2013-10-14
filter
implemented oncopy()
andcopySync()
. (Srirangan / #36)
0.7.1 / 2013-10-12
copySync()
implemented (Srirangan / #33)- updated to the latest
jsonfile
version1.1.0
which givesoptions
params for the JSON methods. Closes #32
0.7.0 / 2013-10-07
- update readme conventions
copy()
now works if destination directory does not exist. Closes #29
0.6.4 / 2013-09-05
- changed
homepage
field in package.json to remove NPM warning
0.6.3 / 2013-06-28
- changed JSON spacing default from
4
to2
to follow Node conventions - updated
jsonfile
dep - updated
rimraf
dep
0.6.2 / 2013-06-28
- added .npmignore, #25
0.6.1 / 2013-05-14
0.6.0 / 2013-03-18
- removed node 0.6 support
- added node 0.10 support
- upgraded to latest
ncp
andrimraf
. - optional
graceful-fs
support. Closes #17
0.5.0 / 2013-02-03
- Removed
readTextFile
. - Renamed
readJSONFile
toreadJSON
andreadJson
, same with write. - Restructured documentation a bit. Added roadmap.
0.4.0 / 2013-01-28
- Set default spaces in
jsonfile
from 4 to 2. - Updated
testutil
deps for tests. - Renamed
touch()
tocreateFile()
- Added
outputFile()
andoutputFileSync()
- Changed creation of testing diretories so the /tmp dir is not littered.
- Added
readTextFile()
andreadTextFileSync()
.
0.3.2 / 2012-11-01
- Added
touch()
andtouchSync()
methods.
0.3.1 / 2012-10-11
- Fixed some stray globals.
0.3.0 / 2012-10-09
- Removed all CoffeeScript from tests.
- Renamed
mkdir
tomkdirs
/mkdirp
.
0.2.1 / 2012-09-11
- Updated
rimraf
dep.
0.2.0 / 2012-09-10
- Rewrote module into JavaScript. (Must still rewrite tests into JavaScript)
- Added all methods of jsonfile
- Added Travis-CI.
0.1.3 / 2012-08-13
- Added method
readJSONFile
.
0.1.2 / 2012-06-15
- Bug fix:
deleteSync()
didn't exist. - Verified Node v0.8 compatibility.
0.1.1 / 2012-06-15
- Fixed bug in
remove()
/delete()
that wouldn't execute the function if a callback wasn't passed.
0.1.0 / 2012-05-31
- Renamed
copyFile()
tocopy()
.copy()
can now copy directories (recursively) too. - Renamed
rmrf()
toremove()
. remove()
aliased withdelete()
.- Added
mkdirp
capabilities. Named:mkdir()
. Hides Node.js nativemkdir()
. - Instead of exporting the native
fs
module with new functions, I now copy over the native methods to a new object and export that instead.
0.0.4 / 2012-03-14
- Removed CoffeeScript dependency
0.0.3 / 2012-01-11
- Added methods rmrf and rmrfSync
- Moved tests from Jasmine to Mocha