Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jprichardson/node-fs-extra
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 44eb2c310a01108ee180a6f8d68b67289e9450e3
Choose a base ref
...
head repository: jprichardson/node-fs-extra
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 5d4bf0b1b9886a2842949aded25c8a16b5d39452
Choose a head ref

Commits on May 17, 2017

  1. Fix typo that broke outputJSONSync()

    Reorganize file to put async methods first
    RyanZim committed May 17, 2017
    Copy the full SHA
    dd85f38 View commit details
  2. Merge pull request #428 from jprichardson/outputJSONSync

    Fix typo that broke outputJSONSync()
    jprichardson authored May 17, 2017
    Copy the full SHA
    40a2e71 View commit details

Commits on May 22, 2017

  1. Copy the full SHA
    6eabb00 View commit details
  2. Merge pull request #429 from bennyn/patch-1

    Fixed link to type definitions
    RyanZim authored May 22, 2017
    Copy the full SHA
    15db64f View commit details

Commits on Jun 26, 2017

  1. BREAKING: fs.read() & fs.write() should return objects

    For forward-compat with util.promisify()
    RyanZim committed Jun 26, 2017
    Copy the full SHA
    e4c3618 View commit details
  2. Copy the full SHA
    5a8d568 View commit details

Commits on Jun 27, 2017

  1. Copy the full SHA
    5f888ba View commit details
  2. Merge pull request #450 from jprichardson/windows-tests

    Skip copy & copySync timestamp tests on 32-bit computers
    RyanZim authored Jun 27, 2017
    Copy the full SHA
    85f531e View commit details

Commits on Jul 10, 2017

  1. Copy the full SHA
    16dc81e View commit details
  2. Copy the full SHA
    f8f441a View commit details
  3. Fix isSrcSubdir() split bug

    manidlou committed Jul 10, 2017
    Copy the full SHA
    d99d8a1 View commit details
  4. Copy the full SHA
    33fbe78 View commit details

Commits on Jul 11, 2017

  1. Copy the full SHA
    395f6b0 View commit details
  2. Merge pull request #460 from jprichardson/docs

    Document writeJson() & outputJson() options
    jprichardson authored Jul 11, 2017
    Copy the full SHA
    ea2e2a4 View commit details
  3. Merge pull request #459 from jprichardson/rimraf

    Apply upstream rimraf fixes
    jprichardson authored Jul 11, 2017
    Copy the full SHA
    f015563 View commit details

Commits on Jul 12, 2017

  1. Merge pull request #458 from jprichardson/prevent-move-into-itself

    Prevent move into itself
    jprichardson authored Jul 12, 2017
    Copy the full SHA
    df6aa07 View commit details

Commits on Jul 13, 2017

  1. Copy the full SHA
    9b624d2 View commit details

Commits on Jul 14, 2017

  1. Merge pull request #449 from jprichardson/read-write-obj

    BREAKING: fs.read() & fs.write() should return objects
    RyanZim authored Jul 14, 2017
    Copy the full SHA
    bd0a200 View commit details
  2. Fix docs lint error

    RyanZim committed Jul 14, 2017
    Copy the full SHA
    eb16cda View commit details
  3. 4.0.0

    RyanZim committed Jul 14, 2017
    Copy the full SHA
    3d25473 View commit details

Commits on Jul 17, 2017

  1. Fix changelog move() notes (#463)

    manidlou authored and RyanZim committed Jul 17, 2017
    Copy the full SHA
    28b7cfe View commit details

Commits on Jul 20, 2017

  1. Copy the full SHA
    3fc5894 View commit details
  2. Merge pull request #466 from jprichardson/ensure-file

    ensureFile & ensureFileSync should error when the path is a directory
    jprichardson authored Jul 20, 2017
    Copy the full SHA
    463c65d View commit details

Commits on Jul 31, 2017

  1. Copy the full SHA
    ec85f4e View commit details
  2. 4.0.1

    RyanZim committed Jul 31, 2017
    Copy the full SHA
    9b5718c View commit details
  3. Update & Optimize CI configs

    - Test on Node 8
    - Only run unit tests on Appveyor
    - Optimize TravisCI builds to use the minimum number of containers
      while keeping the performance reasonable
    RyanZim committed Jul 31, 2017
    Copy the full SHA
    5435252 View commit details
  4. Merge pull request #473 from jprichardson/ci

    Update & Optimize CI configs
    jprichardson authored Jul 31, 2017
    Copy the full SHA
    ab2fae9 View commit details

Commits on Sep 4, 2017

  1. Added '.js' extension to the <main> attribute in package.json, for co…

    …mpatibility with various loaders or bundlers (webpack, systemjs, browserify,...) or any other independent lib which may use package.json.
    vrichard committed Sep 4, 2017
    Copy the full SHA
    f64e76c View commit details

Commits on Sep 5, 2017

  1. Merge pull request #485 from lifaon74/master

    Added '.js' extension to the <main> attribute in package.json
    jprichardson authored Sep 5, 2017
    Copy the full SHA
    bcc1986 View commit details

Commits on Sep 12, 2017

  1. Copy the full SHA
    7a9bb17 View commit details
  2. Universalify fs.copyFile when available

    Refs #490
    RyanZim committed Sep 12, 2017
    Copy the full SHA
    ef9ade4 View commit details
  3. 4.0.2

    RyanZim committed Sep 12, 2017
    Copy the full SHA
    1dd5c18 View commit details

Commits on Oct 5, 2017

  1. docs: update copy to show differences with cp

    Nicolas Marien committed Oct 5, 2017
    Copy the full SHA
    4f01664 View commit details
  2. Merge pull request #497 from nico29/docs/copy-improvements

    update copy documentation to show differences with cp
    jprichardson authored Oct 5, 2017
    Copy the full SHA
    41a33c2 View commit details

Commits on Oct 15, 2017

  1. typo fixed

    fixed
    revelt authored Oct 15, 2017
    Copy the full SHA
    d416fa7 View commit details
  2. Merge pull request #500 from revelt/patch-1

    [documentation] typo found and fixed
    jprichardson authored Oct 15, 2017
    Copy the full SHA
    cc6d425 View commit details

Commits on Oct 18, 2017

  1. Copy the full SHA
    ddb5cb4 View commit details
  2. Merge pull request #501 from jprichardson/rimraf-backports

    Use octal notation for chmod values in rimraf.js
    jprichardson authored Oct 18, 2017
    Copy the full SHA
    2599b67 View commit details

Commits on Oct 20, 2017

  1. Copy the full SHA
    fe0bfe2 View commit details

Commits on Oct 27, 2017

  1. Merge pull request #502 from jprichardson/rewrite-copy

    Rewrite copy
    RyanZim authored Oct 27, 2017
    Copy the full SHA
    166f4a7 View commit details

Commits on Oct 31, 2017

  1. Copy the full SHA
    0bd5279 View commit details

Commits on Nov 1, 2017

  1. Use native fs.copyFileSync in supported envs, add utimesMillisSync fu…

    …nction to util/utimes.js
    manidlou committed Nov 1, 2017
    Copy the full SHA
    1abc2a3 View commit details

Commits on Nov 7, 2017

  1. Merge pull request #505 from jprichardson/native-copyFile

    Add native fs.copyFile and fs.copyFileSync to copy() and copySync()
    jprichardson authored Nov 7, 2017
    Copy the full SHA
    d8adc47 View commit details

Commits on Nov 9, 2017

  1. BREAKING: Don't allow copy()/copySync()'s filter option to be a Regex (

    …#512)
    
    This was deprecated previously, and is now removed.
    RyanZim authored Nov 9, 2017
    Copy the full SHA
    603b8bb View commit details
  2. Add issue template (#514)

    manidlou authored and RyanZim committed Nov 9, 2017
    Copy the full SHA
    a6e8cd6 View commit details
  3. Copy the full SHA
    c59e0a6 View commit details
  4. Merge pull request #516 from jprichardson/fix-copy-streams

    Fix streams initialization in copyFileFallback
    RyanZim authored Nov 9, 2017
    Copy the full SHA
    b72ba64 View commit details
  5. Copy the full SHA
    199ec9f View commit details

Commits on Nov 10, 2017

  1. Merge pull request #517 from jprichardson/copy-parent-dir

    Create dest parent after applying filter in copy
    RyanZim authored Nov 10, 2017
    Copy the full SHA
    03fba97 View commit details

Commits on Nov 11, 2017

  1. Copy the full SHA
    fda912a View commit details
Showing with 6,973 additions and 3,046 deletions.
  1. +6 −0 .github/issue_template.md
  2. +24 −0 .github/workflows/ci.yml
  3. +0 −8 .npmignore
  4. +1 −0 .npmrc
  5. +0 −16 .travis.yml
  6. +217 −0 CHANGELOG.md
  7. +64 −14 README.md
  8. +0 −25 appveyor.yml
  9. +6 −6 docs/copy-sync.md
  10. +21 −10 docs/copy.md
  11. +16 −3 docs/emptyDir.md
  12. +17 −2 docs/ensureDir-sync.md
  13. +49 −2 docs/ensureDir.md
  14. +16 −1 docs/ensureFile.md
  15. +8 −6 docs/ensureLink-sync.md
  16. +24 −7 docs/ensureLink.md
  17. +9 −7 docs/ensureSymlink-sync.md
  18. +25 −8 docs/ensureSymlink.md
  19. +48 −0 docs/fs-read-write-writev.md
  20. +3 −3 docs/move-sync.md
  21. +23 −7 docs/move.md
  22. +3 −3 docs/outputFile-sync.md
  23. +21 −3 docs/outputFile.md
  24. +5 −2 docs/outputJson-sync.md
  25. +23 −2 docs/outputJson.md
  26. +17 −4 docs/pathExists.md
  27. +3 −4 docs/readJson-sync.md
  28. +29 −8 docs/readJson.md
  29. +1 −1 docs/remove-sync.md
  30. +17 −5 docs/remove.md
  31. +6 −3 docs/writeJson-sync.md
  32. +21 −5 docs/writeJson.md
  33. +7 −5 lib/__tests__/promise.test.js
  34. +0 −62 lib/copy-sync/__tests__/copy-sync-preserve-time.test.js
  35. +0 −1 lib/copy-sync/__tests__/fixtures/a-file
  36. +0 −1 lib/copy-sync/__tests__/fixtures/a-folder/another-file
  37. +0 −1 lib/copy-sync/__tests__/fixtures/a-folder/another-folder/file3
  38. +0 −41 lib/copy-sync/copy-file-sync.js
  39. +0 −62 lib/copy-sync/copy-sync.js
  40. +0 −3 lib/copy-sync/index.js
  41. +62 −0 lib/copy/__tests__/copy-broken-symlink.test.js
  42. +108 −0 lib/copy/__tests__/copy-case-insensitive-paths.test.js
  43. +3 −3 lib/copy/__tests__/{async → }/copy-gh-89.test.js
  44. +12 −16 lib/copy/__tests__/copy-permissions.test.js
  45. +0 −70 lib/copy/__tests__/copy-preserve-time.test.js
  46. +74 −0 lib/copy/__tests__/copy-preserve-timestamp.test.js
  47. +252 −0 lib/copy/__tests__/copy-prevent-copying-identical.test.js
  48. +397 −0 lib/copy/__tests__/copy-prevent-copying-into-itself.test.js
  49. +56 −0 lib/copy/__tests__/copy-readonly-dir.test.js
  50. +16 −9 lib/{copy-sync/__tests__/broken-symlink.test.js → copy/__tests__/copy-sync-broken-symlink.test.js}
  51. +124 −0 lib/copy/__tests__/copy-sync-case-insensitive-paths.test.js
  52. +41 −15 lib/{copy-sync → copy}/__tests__/copy-sync-dir.test.js
  53. +48 −14 lib/{copy-sync → copy}/__tests__/copy-sync-file.test.js
  54. +71 −0 lib/copy/__tests__/copy-sync-preserve-timestamp.test.js
  55. +271 −0 lib/copy/__tests__/copy-sync-prevent-copying-identical.test.js
  56. +423 −0 lib/copy/__tests__/copy-sync-prevent-copying-into-itself.test.js
  57. +51 −0 lib/copy/__tests__/copy-sync-readonly-dir.test.js
  58. +8 −9 lib/{copy-sync/__tests__/symlink.test.js → copy/__tests__/copy-sync-symlink.test.js}
  59. +147 −14 lib/copy/__tests__/copy.test.js
  60. +0 −1 lib/copy/__tests__/fixtures/a-file
  61. +0 −1 lib/copy/__tests__/fixtures/a-folder/another-file
  62. +0 −1 lib/copy/__tests__/fixtures/a-folder/another-folder/file3
  63. +8 −9 lib/copy/__tests__/ncp/broken-symlink.test.js
  64. +7 −5 lib/copy/__tests__/ncp/ncp-error-perm.test.js
  65. +14 −16 lib/copy/__tests__/ncp/ncp.test.js
  66. +7 −7 lib/copy/__tests__/ncp/symlink.test.js
  67. +161 −0 lib/copy/copy-sync.js
  68. +169 −46 lib/copy/copy.js
  69. +5 −2 lib/copy/index.js
  70. +0 −234 lib/copy/ncp.js
  71. +7 −7 lib/empty/__tests__/empty-dir-sync.test.js
  72. +7 −7 lib/empty/__tests__/empty-dir.test.js
  73. +11 −20 lib/empty/index.js
  74. +29 −3 lib/ensure/__tests__/create.test.js
  75. +30 −1 lib/ensure/__tests__/ensure.test.js
  76. +19 −49 lib/ensure/__tests__/link.test.js
  77. +12 −12 lib/ensure/__tests__/symlink-paths.test.js
  78. +5 −5 lib/ensure/__tests__/symlink-type.test.js
  79. +43 −131 lib/ensure/__tests__/symlink.test.js
  80. +46 −26 lib/ensure/file.js
  81. +15 −15 lib/ensure/index.js
  82. +37 −34 lib/ensure/link.js
  83. +59 −57 lib/ensure/symlink-paths.js
  84. +17 −14 lib/ensure/symlink-type.js
  85. +42 −41 lib/ensure/symlink.js
  86. +68 −0 lib/esm.mjs
  87. +29 −0 lib/fs/__tests__/copyFile.test.js
  88. +3 −5 lib/fs/__tests__/fs-integration.test.js
  89. +270 −0 lib/fs/__tests__/multi-param.test.js
  90. +8 −7 lib/fs/__tests__/mz.test.js
  91. +85 −0 lib/fs/__tests__/realpath.test.js
  92. +26 −0 lib/fs/__tests__/rm.test.js
  93. +89 −10 lib/fs/index.js
  94. +14 −20 lib/index.js
  95. +18 −1 lib/json/__tests__/jsonfile-integration.test.js
  96. +8 −9 lib/json/__tests__/output-json-sync.test.js
  97. +30 −11 lib/json/__tests__/output-json.test.js
  98. +38 −0 lib/json/__tests__/promise-support.test.js
  99. +1 −1 lib/json/__tests__/read.test.js
  100. +3 −3 lib/json/index.js
  101. +2 −3 lib/json/jsonfile.js
  102. +4 −10 lib/json/output-json-sync.js
  103. +5 −20 lib/json/output-json.js
  104. +4 −9 lib/mkdirs/__tests__/chmod.test.js
  105. +4 −10 lib/mkdirs/__tests__/clobber.test.js
  106. +2 −3 lib/mkdirs/__tests__/issue-209.test.js
  107. +10 −3 lib/mkdirs/__tests__/issue-93.test.js
  108. +1 −1 lib/mkdirs/__tests__/mkdir.test.js
  109. +4 −8 lib/mkdirs/__tests__/mkdirp.test.js
  110. +2 −3 lib/mkdirs/__tests__/opts-undef.test.js
  111. +5 −9 lib/mkdirs/__tests__/perm.test.js
  112. +5 −9 lib/mkdirs/__tests__/perm_sync.test.js
  113. +6 −10 lib/mkdirs/__tests__/race.test.js
  114. +4 −8 lib/mkdirs/__tests__/rel.test.js
  115. +0 −41 lib/mkdirs/__tests__/return.test.js
  116. +0 −39 lib/mkdirs/__tests__/return_sync.test.js
  117. +6 −8 lib/mkdirs/__tests__/root.test.js
  118. +4 −8 lib/mkdirs/__tests__/sync.test.js
  119. +0 −82 lib/mkdirs/__tests__/umask.test.js
  120. +9 −9 lib/mkdirs/index.js
  121. +27 −0 lib/mkdirs/make-dir.js
  122. +0 −59 lib/mkdirs/mkdirs-sync.js
  123. +0 −63 lib/mkdirs/mkdirs.js
  124. +21 −0 lib/mkdirs/utils.js
  125. +0 −25 lib/mkdirs/win32.js
  126. +0 −189 lib/move-sync/__tests__/move-sync-prevent-moving-into-itself.test.js
  127. +0 −118 lib/move-sync/index.js
  128. +20 −0 lib/move/__tests__/cross-device-utils.js
  129. +87 −0 lib/move/__tests__/move-case-insensitive-paths.test.js
  130. +79 −0 lib/move/__tests__/move-preserve-timestamp.test.js
  131. +252 −0 lib/move/__tests__/move-prevent-moving-identical.test.js
  132. +362 −0 lib/move/__tests__/move-prevent-moving-into-itself.test.js
  133. +75 −0 lib/move/__tests__/move-sync-case-insensitive-paths.test.js
  134. +77 −0 lib/move/__tests__/move-sync-preserve-timestamp.test.js
  135. +271 −0 lib/move/__tests__/move-sync-prevent-moving-identical.test.js
  136. +400 −0 lib/move/__tests__/move-sync-prevent-moving-into-itself.test.js
  137. +56 −101 lib/{move-sync → move}/__tests__/move-sync.test.js
  138. +224 −223 lib/move/__tests__/move.test.js
  139. +3 −158 lib/move/index.js
  140. +55 −0 lib/move/move-sync.js
  141. +59 −0 lib/move/move.js
  142. +5 −5 lib/{output → output-file}/__tests__/output.test.js
  143. +31 −0 lib/output-file/index.js
  144. +0 −40 lib/output/index.js
  145. +1 −1 lib/path-exists/__tests__/path-exists-sync.test.js
  146. +1 −1 lib/path-exists/__tests__/path-exists.test.js
  147. +2 −2 lib/remove/__tests__/remove-dir.test.js
  148. +1 −1 lib/remove/__tests__/remove-sync-dir.test.js
  149. +1 −1 lib/remove/__tests__/remove-sync-file.test.js
  150. +7 −6 lib/remove/__tests__/remove.test.js
  151. +11 −3 lib/remove/index.js
  152. +0 −296 lib/remove/rimraf.js
  153. +66 −0 lib/util/__tests__/stat.test.js
  154. +33 −43 lib/util/__tests__/utimes.test.js
  155. +0 −16 lib/util/assign.js
  156. +0 −11 lib/util/buffer.js
  157. +158 −0 lib/util/stat.js
  158. +25 −61 lib/util/utimes.js
  159. +31 −23 package.json
  160. +5 −5 test.js
  161. +116 −0 test.mjs
6 changes: 6 additions & 0 deletions .github/issue_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<!-- First ensure you installed the latest version of fs-extra -->
<!-- If your bug still exists please fill out the following information if it applies to your issue: -->
<!-- Please check if you have installed a supported version of Node.js as written in "engines" in the package.json -->
- **Operating System:**
- **Node.js version:**
- **`fs-extra` version:**
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Node.js CI
on:
push:
branches: master
pull_request:

permissions:
contents: read # to fetch code (actions/checkout)

jobs:
test:
strategy:
matrix:
node: [14.x, 16.x, 18.x, 19.x]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- run: npm install
- run: npm test
8 changes: 0 additions & 8 deletions .npmignore

This file was deleted.

1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package-lock=false
16 changes: 0 additions & 16 deletions .travis.yml

This file was deleted.

217 changes: 217 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,220 @@
11.2.0 / 2023-11-27
-------------------

- Copy directory contents in parallel for better performance ([#1026](https://github.com/jprichardson/node-fs-extra/pull/1026))
- Refactor internal code to use `async`/`await` ([#1020](https://github.com/jprichardson/node-fs-extra/issues/1020))

11.1.1 / 2023-03-20
-------------------

- Preserve timestamps when moving files across devices ([#992](https://github.com/jprichardson/node-fs-extra/issues/992), [#994](https://github.com/jprichardson/node-fs-extra/pull/994))

11.1.0 / 2022-11-29
-------------------

- Re-add `main` field to `package.json` for better TypeScript compatibility ([#979](https://github.com/jprichardson/node-fs-extra/issues/979), [#981](https://github.com/jprichardson/node-fs-extra/pull/981))

11.0.0 / 2022-11-28
-------------------

### Breaking Changes

- Don't allow requiring `fs-extra/lib/SOMETHING` (switched to `exports`) ([#974](https://github.com/jprichardson/node-fs-extra/pull/974))
- Require Node v14.14+ ([#968](https://github.com/jprichardson/node-fs-extra/issues/968), [#969](https://github.com/jprichardson/node-fs-extra/pull/969))

### New Features

- Add `fs-extra/esm` for ESM named export support; see [docs](https://github.com/jprichardson/node-fs-extra#esm) for details ([#746](https://github.com/jprichardson/node-fs-extra/issues/746), [#974](https://github.com/jprichardson/node-fs-extra/pull/974))
- Add promise support for `fs.readv()` ([#970](https://github.com/jprichardson/node-fs-extra/pull/970))

### Bugfixes

- Don't `stat` filtered items in `copy*` ([#965](https://github.com/jprichardson/node-fs-extra/issues/965), [#971](https://github.com/jprichardson/node-fs-extra/pull/971))
- Remove buggy stats check in `copy` ([#918](https://github.com/jprichardson/node-fs-extra/issues/918), [#976](https://github.com/jprichardson/node-fs-extra/pull/976))

10.1.0 / 2022-04-16
-------------------

- Warn if `fs.realpath.native` does not exist, instead of erroring ([#953](https://github.com/jprichardson/node-fs-extra/pull/953))
- Allow explicitly passing `undefined` options to `move()` ([#947](https://github.com/jprichardson/node-fs-extra/issues/947), [#955](https://github.com/jprichardson/node-fs-extra/pull/955))
- Use `process.emitWarning` instead of `console.warn` ([#954](https://github.com/jprichardson/node-fs-extra/pull/954))

10.0.1 / 2022-02-22
-------------------

- Add `sideEffects: false` to `package.json` ([#941](https://github.com/jprichardson/node-fs-extra/pull/941))

10.0.0 / 2021-05-03
-------------------

### Breaking changes

- Require Node.js v12+ ([#886](https://github.com/jprichardson/node-fs-extra/issues/886), [#893](https://github.com/jprichardson/node-fs-extra/pull/893), [#890](https://github.com/jprichardson/node-fs-extra/pull/890), [#894](https://github.com/jprichardson/node-fs-extra/pull/894), [#895]( https://github.com/jprichardson/node-fs-extra/pull/895))
- Allow copying broken symlinks ([#779](https://github.com/jprichardson/node-fs-extra/pull/779), [#765](https://github.com/jprichardson/node-fs-extra/issues/765), [#638](https://github.com/jprichardson/node-fs-extra/issues/638), [#761](https://github.com/jprichardson/node-fs-extra/issues/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](https://github.com/jprichardson/node-fs-extra/pull/826), [#786](https://github.com/jprichardson/node-fs-extra/issues/786), [#870](https://github.com/jprichardson/node-fs-extra/issues/870))
- Error when attempting to `copy*()` unknown file type ([#880](https://github.com/jprichardson/node-fs-extra/pull/880))
- Remove undocumented options for `remove*()` ([#882](https://github.com/jprichardson/node-fs-extra/pull/882))

### Improvements

- Allow changing case of filenames with `move*()`, even on technically case-insensitive filesystems ([#759](https://github.com/jprichardson/node-fs-extra/issues/759), [#801](https://github.com/jprichardson/node-fs-extra/pull/801))
- Use native `fs.rm*()` for `remove*()` in environments that support it ([#882](https://github.com/jprichardson/node-fs-extra/pull/882), [#806](https://github.com/jprichardson/node-fs-extra/issues/806))
- Improve `emptyDir()` performance ([#885](https://github.com/jprichardson/node-fs-extra/pull/885))

### Bugfixes

- Ensure `copy*()`'s `filter` function is not called more than necessary ([#883](https://github.com/jprichardson/node-fs-extra/pull/883), [#809](https://github.com/jprichardson/node-fs-extra/issues/809))
- Fix `move*()` raising `EPERM` error when moving a file to the root of a drive on Windows ([#897](https://github.com/jprichardson/node-fs-extra/pull/897), [#819](https://github.com/jprichardson/node-fs-extra/issues/819))

### Miscellaneous changes

- Do not use `at-least-node` as a dependency ([#896](https://github.com/jprichardson/node-fs-extra/pull/896))
- Improve documentation ([#888](https://github.com/jprichardson/node-fs-extra/pull/888), [#830](https://github.com/jprichardson/node-fs-extra/issues/830), [#884](https://github.com/jprichardson/node-fs-extra/pull/884), [#843](https://github.com/jprichardson/node-fs-extra/issues/843))

9.1.0 / 2021-01-19
------------------

- Add promise support for `fs.rm()` ([#841](https://github.com/jprichardson/node-fs-extra/issues/841), [#860](https://github.com/jprichardson/node-fs-extra/pull/860))
- Upgrade universalify for performance improvments ([#825](https://github.com/jprichardson/node-fs-extra/pull/825))

9.0.1 / 2020-06-03
------------------

- Fix issue with `ensureFile()` when used with Jest on Windows ([#804](https://github.com/jprichardson/node-fs-extra/issues/804), [#805](https://github.com/jprichardson/node-fs-extra/pull/805))
- Remove unneeded `process.umask()` call ([#791](https://github.com/jprichardson/node-fs-extra/pull/791))
- Docs improvements ([#753](https://github.com/jprichardson/node-fs-extra/pull/753), [#795](https://github.com/jprichardson/node-fs-extra/pull/795), [#797](https://github.com/jprichardson/node-fs-extra/pull/797))

9.0.0 / 2020-03-19
------------------

### Breaking changes

- Requires Node.js version 10 or greater ([#725](https://github.com/jprichardson/node-fs-extra/issues/725), [#751](https://github.com/jprichardson/node-fs-extra/pull/751))
- Switched `ensureDir*` to use a fork of https://github.com/sindresorhus/make-dir to make use of native recursive `fs.mkdir` where possible ([#619](https://github.com/jprichardson/node-fs-extra/issues/619), [#756](https://github.com/jprichardson/node-fs-extra/pull/756))
- Properly preserve `atime` for `copy*` with `preserveTimestamps` option ([#633](https://github.com/jprichardson/node-fs-extra/pull/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](https://github.com/jprichardson/node-fs-extra/issues/702), [#768](https://github.com/jprichardson/node-fs-extra/pull/768))
- Cannot pass `null` as an options parameter to `*Json*` methods ([#745](https://github.com/jprichardson/node-fs-extra/issues/745), [#768](https://github.com/jprichardson/node-fs-extra/pull/768))

### Improvements

- Add promise shims for `fs.writev` & `fs.opendir` ([#747](https://github.com/jprichardson/node-fs-extra/pull/747))
- Better errors for `ensureFile` ([#696](https://github.com/jprichardson/node-fs-extra/issues/696), [#744](https://github.com/jprichardson/node-fs-extra/pull/744))
- Better file comparison for older Node versions ([#694](https://github.com/jprichardson/node-fs-extra/pull/694))

### Miscellaneous changes
- Peformance optimizations ([#762](https://github.com/jprichardson/node-fs-extra/issues/762), [#764](https://github.com/jprichardson/node-fs-extra/pull/764))
- Add missing documentation for aliases ([#758](https://github.com/jprichardson/node-fs-extra/issues/758), [#766](https://github.com/jprichardson/node-fs-extra/pull/766))
- Update `universalify` dependency ([#767](https://github.com/jprichardson/node-fs-extra/pull/767))

8.1.0 / 2019-06-28
------------------

- Add support for promisified `fs.realpath.native` in Node v9.2+ ([#650](https://github.com/jprichardson/node-fs-extra/issues/650), [#682](https://github.com/jprichardson/node-fs-extra/pull/682))
- Update `graceful-fs` dependency ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))
- Use `graceful-fs` everywhere ([#700](https://github.com/jprichardson/node-fs-extra/pull/700))

8.0.1 / 2019-05-13
------------------

- Fix bug `Maximum call stack size exceeded` error in `util/stat` ([#679](https://github.com/jprichardson/node-fs-extra/pull/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 in `moveSync()`
- Fix bug with bind-mounted directories in `copy*()` ([#613](https://github.com/jprichardson/node-fs-extra/issues/613), [#618](https://github.com/jprichardson/node-fs-extra/pull/618))
- Fix bug in `move()` with case-insensitive file systems
- Use `fs.stat()`'s `bigint` option in `copy*()` & `move*()` where possible ([#657](https://github.com/jprichardson/node-fs-extra/issues/657))

7.0.1 / 2018-11-07
------------------

- Fix `removeSync()` on Windows, in some cases, it would error out with `ENOTEMPTY` ([#646](https://github.com/jprichardson/node-fs-extra/pull/646))
- Document `mode` option for `ensureDir*()` ([#587](https://github.com/jprichardson/node-fs-extra/pull/587))
- Don't include documentation files in npm package tarball ([#642](https://github.com/jprichardson/node-fs-extra/issues/642), [#643](https://github.com/jprichardson/node-fs-extra/pull/643))

7.0.0 / 2018-07-16
------------------

- **BREAKING:** Refine `copy*()` handling of symlinks to properly detect symlinks that point to the same file. ([#582](https://github.com/jprichardson/node-fs-extra/pull/582))
- Fix bug with copying write-protected directories ([#600](https://github.com/jprichardson/node-fs-extra/pull/600))
- Universalify `fs.lchmod()` ([#596](https://github.com/jprichardson/node-fs-extra/pull/596))
- Add `engines` field to `package.json` ([#580](https://github.com/jprichardson/node-fs-extra/pull/580))

6.0.1 / 2018-05-09
------------------

- Fix `fs.promises` `ExperimentalWarning` on Node v10.1.0 ([#578](https://github.com/jprichardson/node-fs-extra/pull/578))

6.0.0 / 2018-05-01
------------------

- Drop support for Node.js versions 4, 5, & 7 ([#564](https://github.com/jprichardson/node-fs-extra/pull/564))
- Rewrite `move` to use `fs.rename` where possible ([#549](https://github.com/jprichardson/node-fs-extra/pull/549))
- Don't convert relative paths to absolute paths for `filter` ([#554](https://github.com/jprichardson/node-fs-extra/pull/554))
- `copy*`'s behavior when `preserveTimestamps` is `false` has been OS-dependent since 5.0.0, but that's now explicitly noted in the docs ([#563](https://github.com/jprichardson/node-fs-extra/pull/563))
- Fix subdirectory detection for `copy*` & `move*` ([#541](https://github.com/jprichardson/node-fs-extra/pull/541))
- Handle case-insensitive paths correctly in `copy*` ([#568](https://github.com/jprichardson/node-fs-extra/pull/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](https://github.com/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](https://github.com/jprichardson/node-fs-extra/pull/512)
- `copy()`'s `filter` option can now be a function that returns a Promise. [#518](https://github.com/jprichardson/node-fs-extra/pull/518)
- `copy()` & `copySync()` now use `fs.copyFile()`/`fs.copyFileSync()` in environments that support it (currently Node 8.5.0+). Older Node versions still get the old implementation. [#505](https://github.com/jprichardson/node-fs-extra/pull/505)
- Don't allow copying a directory into itself. [#83](https://github.com/jprichardson/node-fs-extra/issues/83)
- Handle copying between identical files. [#198](https://github.com/jprichardson/node-fs-extra/issues/198)
- Error out when copying an empty folder to a path that already exists. [#464](https://github.com/jprichardson/node-fs-extra/issues/464)
- Don't create `dest`'s parent if the `filter` function aborts the `copy()` operation. [#517](https://github.com/jprichardson/node-fs-extra/pull/517)
- Fix `writeStream` not being closed if there was an error in `copy()`. [#516](https://github.com/jprichardson/node-fs-extra/pull/516)

4.0.3 / 2017-12-05
------------------

- Fix wrong `chmod` values in `fs.remove()` [#501](https://github.com/jprichardson/node-fs-extra/pull/501)
- Fix `TypeError` on systems that don't have some `fs` operations like `lchown` [#520](https://github.com/jprichardson/node-fs-extra/pull/520)

4.0.2 / 2017-09-12
------------------

- Added `EOL` option to `writeJson*` & `outputJson*` (via upgrade to jsonfile v4)
- Added promise support to [`fs.copyFile()`](https://nodejs.org/api/fs.html#fs_fs_copyfile_src_dest_flags_callback) in Node 8.5+
- Added `.js` extension to `main` field in `package.json` for better tooling compatibility. [#485](https://github.com/jprichardson/node-fs-extra/pull/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 with `ensureDir()`. [#465](https://github.com/jprichardson/node-fs-extra/issues/465), [#466](https://github.com/jprichardson/node-fs-extra/pull/466), [#470](https://github.com/jprichardson/node-fs-extra/issues/470)

4.0.0 / 2017-07-14
------------------

### Changed

- **BREAKING:** The promisified versions of `fs.read()` & `fs.write()` now return objects. See [the docs](docs/fs-read-write.md) for details. [#436](https://github.com/jprichardson/node-fs-extra/issues/436), [#449](https://github.com/jprichardson/node-fs-extra/pull/449)
- `fs.move()` now errors out when destination is a subdirectory of source. [#458](https://github.com/jprichardson/node-fs-extra/pull/458)
- Applied upstream fixes from `rimraf` to `fs.remove()` & `fs.removeSync()`. [#459](https://github.com/jprichardson/node-fs-extra/pull/459)

### Fixed

- Got `fs.outputJSONSync()` working again; it was broken due to refactoring. [#428](https://github.com/jprichardson/node-fs-extra/pull/428)

Also clarified the docs in a few places.

3.0.1 / 2017-05-04
------------------

Loading