From 729d5e2bacd221da9013cb6a29e8168f99213b12 Mon Sep 17 00:00:00 2001 From: Josh Kelley Date: Wed, 6 Aug 2025 10:07:22 -0400 Subject: [PATCH 1/2] ESM-compatible exports Node.js handles ESM-CJS interoperability by using its [cjs-module-lexer](https://github.com/nodejs/cjs-module-lexer) to parse CJS files and turn their exports into named exports. cjs-module-lexer is deliberately limited in its capabilities. Switching export styles makes jsonfile's exports recognizable by cjs-module-lexer so that ESM code such aborts ``` import { readFileSync } from 'jsonfile' ``` can work as expected, without having to change jsonfile itself to ESM. Fixes #153 --- index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.js b/index.js index 0582868..225b547 100644 --- a/index.js +++ b/index.js @@ -78,11 +78,9 @@ function writeFileSync (file, obj, options = {}) { return fs.writeFileSync(file, str, options) } -const jsonfile = { +module.exports = { readFile, readFileSync, writeFile, writeFileSync } - -module.exports = jsonfile From 1ae4cff5a96a266d2d57879baf841f619f3da20e Mon Sep 17 00:00:00 2001 From: Ryan Zimmerman Date: Sat, 9 Aug 2025 13:16:05 -0400 Subject: [PATCH 2/2] Add comment --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index 225b547..acd0af2 100644 --- a/index.js +++ b/index.js @@ -78,6 +78,8 @@ function writeFileSync (file, obj, options = {}) { return fs.writeFileSync(file, str, options) } +// NOTE: do not change this export format; required for ESM compat +// see https://github.com/jprichardson/node-jsonfile/pull/162 for details module.exports = { readFile, readFileSync,