Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
replace
import
specifier with module
fixes #764 Prior to this commit ion-js declared a 'import' conditional export, which meant that node would load `./dist/es6/es6/Ion.js` when loaded via import. However, ion-js's es6 output is not compatible with node because it doesn't use the correct file extension or package.json `type` to indicate it is a esm file, and it's imports do not use file extensions. Node uses the `import` condition whenever a module is loaded with `import`. Long term it would be good to convert to esm or use `import` but that would require writing and emitting valid ESM, I had some issues with that that I described in the original issue. As a quick fix I replaced the `import` condition with a `module` condition, which bundlers like esbuild and webpack will prefer. esbuild uses es6 ``` echo "import 'ion-js'" | npx esbuild --bundle --analyze --outfile=/dev/null ../../../../../dev/null 175.2kb 100.0% ├ dist/es6/es6/IonParserTextRaw.js 41.5kb 23.7% ``` node can import and require ion-js ``` node -e "require('ion-js')" node -e "import('ion-js')" ``` https://nodejs.org/docs/latest-v16.x/api/packages.html#subpath-exports https://nodejs.org/docs/latest-v16.x/api/packages.html#conditional-exports https://nodejs.org/docs/latest-v16.x/api/esm.html#mandatory-file-extensions https://esbuild.github.io/api/#how-conditions-work
- Loading branch information