Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

package.json types/main/module take precedence over conditional exports

Abierto
#1,094 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
javascript, nodejs, rollup, typescript

Línea de trabajo

Reproduce el problema con el ejemplo de package.json usando microbundle --target node -f esm --generateTypes=true y compara después el resultado con tsc. Inspecciona cómo la compilación gestiona los campos exports, main, module y types de package.json junto con las opciones resolvePackageJsonExports y moduleResolution de tsconfig.json. Se considera hecho cuando las exportaciones condicionales resuelven los tipos declarados sin requerir un campo types en la raíz.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Possibly somewhat related to #1085.

Given a package.json:

{
  "main": "./lib/index.cjs",
  "module": "./lib/index.js",
  "type": "module",
  "dependencies": {
    "some-client-with-matching-esm-and-tsconfig": "^x.x.x"
  },
  "exports": {
    ".": {
      "require": {
        "types": "./lib/index.d.ts",
        "default": "./lib/index.cjs"
      },
      "import": {
        "types": "./lib/index.d.ts",
        "default": "./lib/index.js"
      }
    },
    "./package.json": "./package.json"
  },

_without root types property, running:

microbundle --target node -f esm --generateTypes=true

results in error:

(rpt2 plugin) Error: /Users/xxxx/dev/project/dependingclient.ts(197,32): semantic error TS2339: Property 'request' does not exist on type 'DependingClient.ts'.
at RollupContext.error (/Users/xxxx/dev/project/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:20259:3

Indicating it cannot find the types specified in the conditional exports.

Working solution: Specify "types": "./lib/index.d.ts" at root-level.
Also works: Remove the "main" and module property

It seems to me package.json conditional exports are not taking precedence over main/module/types

Not sure if related but when in tsconfig.json resolvePackageJsonExports is explicitly set to true (even weirder is that it would be true by default in node16 moduleresolution) , regardless of whether moduleResolution is set to node16, it throws

rpt2: options error TS5098: Option 'resolvePackageJsonExports' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'. Whereas running the build simple with tsc causes no issues.

Lenguaje dominante
JavaScript
Estrellas
8.1k
Forks
358
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de developit/microbundle

Todos los issues de developit/microbundle

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.