developit / microbundle

📦 Zero-configuration bundler for tiny modules.
https://npm.im/microbundle
MIT License
8.06k stars 361 forks source link

Not generating correct names for different output formats #825

Open markerikson opened 3 years ago

markerikson commented 3 years ago

I'm trying out Microbundle with https://github.com/reduxjs/redux-toolkit . For some reason, Microbundle seems to be ignoring the names that I've specified in the various main/module/exports fields, and is trying to reuse the the name from main for all output files.

Here's what I'm seeing. Currently, I've got package.json configured with these file names:

  "source": "src/index.ts",
  "main": "dist/a.js",   
  "exports": "./dist/b.modern.js",
  "module": "dist/c.module.js", 
  "unpkg": "dist/d.umd.js",   
  "types": "dist/typings.d.ts",

Microbundle reports this output:

Build "toolkit" to dist:
      7.22 kB: a.js.gz
      6.45 kB: a.js.br
      6.06 kB: a.modern.js.gz
      5.42 kB: a.modern.js.br
      7.14 kB: a.module.js.gz
      6.39 kB: a.module.js.br
      7.31 kB: a.umd.js.gz
      6.53 kB: a.umd.js.br

And the output files are:

dist/a.js
dist/a.modern.js
dist/a.module.js
dist/a.umd.js

Those are clearly not the file names I specified. Is there something obvious I'm missing here?

developit commented 3 years ago

Hi @markerikson - what is your build script like? I believe we infer from filenames passed as --input / position arts, but use the configured names when compiling from "source".

markerikson commented 3 years ago

Right now all I'm doing is npm run microbundle, where that's a run script that is also literally just "microbundle". So, something isn't adding up here.

Visual diff vs current RTK master:

image

ppiyush13 commented 3 years ago

I am also facing the same issue using microbundle@0.13.0. I have created repository with bare minimum code to reproduce this issue https://github.com/ppiyush13/microbundle-issue_825.

Simply execute npm run build or yarn build script to generate bundles in dist directory.

szimek commented 3 years ago

I've got a similar issue - even though I have specified a filename with .mjs extension in exports field, microbundle build (0.13) seems to ignore it and still generates the standard set of files, i.e.

my-lib.js
my-lib.modern.js
my-lib.module.js
my-lib.umd.js
ppiyush13 commented 3 years ago

Any update ?

rschristian commented 3 years ago

Customizing the file name with pkg.exports should be doable with #784, though that doesn't cover the full width of this issue.