developit / developit/microbundle
Export maps and node support
- Vorherrschende Sprache
- JavaScript
- Sterne
- 8.1k
- Forks
- 358
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Hello there 👋,
I recently switched to microbundle for a bunch of my libs and I love it so far, however, I ran into an issue where the modern bundle (via `exports`) doesn't seem to run inside node.js.
My (simplified) package.json looks like this:
```json
{
"name": "color2k",
"sideEffects": false,
"exports": "./dist/index.modern.js",
"main": "./dist/index.js",
"unpkg": "./dist/index.umd.js",
"module": "./dist/index.module.js",
"source": "./src/index.ts",
"types": "./dist/index.d.ts",
"scripts": {
"build": "microbundle"
}
}
```
And after I run `microbundle`, my dist folder looks like this
```
index.d.ts
index.js
index.js.map
index.modern.js
index.modern.js.map
index.module.js
index.module.js.map
index.umd.js
index.umd.js.map
```
And after I publish with this config and run the following code with Node.js, I get the following error:
```js
// my-file.js
const color2k = require('color2k');
// ...
```
```
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
```
---
I suspect this is due to Node.js not knowing what to do with exports. For more context, I'm _not_ using the `mjs` extension when running this code in node LTS v14.15.3.
Maybe this is more of a question rather than a bug but in general: **How do I use exports with microbundle? How can I author a package that is both for Node.js and browsers?**
- Do I need to write a [conditional exports map](https://nodejs.org/api/packages.html#packages_conditional_exports)?
- Do I need to post-fix the modern bundle with the `.mjs` extension? If so how do I do that with microbundle?
Thanks for any support!
For now, I'll just remove the `exports` field.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.