es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

puntos de entrada de package.json con rollup y @rollup/plugin-node-resolve

Estoy buscando ayuda con los puntos de entrada de package.json (es decir, con @rollup/plugin-node-resolve, con snowpack). Para un paquete que estoy importando (indirectamente a través de RxDB), tengo algunos problemas y según su mantenedor, simplemente no está eligiendo el punto de entrada correcto:

el módulo broadcast-channel es un módulo esm que tiene un índice de exportación diferente para los navegadores. Tu agrupador no debe incluir el archivo methods/node.js con la llamada a promisify

El punto de entrada en cuestión:

https://github.com/pubkey/broadcast-channel/blob/56e9be9469d9419ac835bf7278aea353acfd99aa/package.json#L11

La sección de exports del package.json^ se ve así – mi comprensión es que si puedo hacer que rollup elija las entradas bajo “browser”, eso resolvería mi problema:

"exports": {
    ".": {
      "node": {
        "import": "./dist/esnode/index.js",
        "default": "./dist/es5node/index.js"
      },
      "browser": {
        "import": "./dist/esbrowser/index.js",
        "default": "./dist/lib/index.es5.js"
      }
    },
    "./package.json": "./package.json"
  },

He probado las siguientes opciones, pero no ha ayudado:

nodeResolve({
    browser: true,
    mainFields: ['browser'],
    exportConditions: ['browser'],
})

¿Alguien puede recomendar algunas opciones de configuración alternativas para probar?

Información adicional, en caso de que ayude: el mismo problema surge cuando uso @snowpack/plugin-webpack.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas con los puntos de entrada del archivo package.json y estás intentando hacer que Rollup elija las entradas bajo la sección “browser” para resolver tu problema con el módulo broadcast-channel. Aquí tienes algunas sugerencias que puedes probar:

    1. Asegúrate de tener la última versión de @rollup/plugin-node-resolve instalada, ya que este complemento es responsable de resolver y establecer los puntos de entrada. Puedes verificar la versión en tu archivo package-lock.json.
    2. Intenta usar la opción jsnext:main en tu configuración de Rollup, lo cual le indica al resolutor que use el punto de entrada del módulo ES si existe. Puedes agregar esto a tu arreglo mainFields de la siguiente manera:

    nodeResolve({
      browser: true,
      mainFields: ['jsnext:main', 'browser', 'module', 'main'],
      exportConditions: ['browser']
    })
    
    1. Si las opciones anteriores no funcionan, puedes intentar usar la opción alias en Rollup para asignar manualmente la ruta de importación al punto de entrada correcto. Por ejemplo:
    alias({
      entries: {
        'broadcast-channel': './dist/esbrowser/index.js'
      }
    })
    

    Con estas opciones, deberías poder hacer que Rollup elija los puntos de entrada correctos y evitar los problemas con el módulo broadcast-channel. ¡Buena suerte!

Comments are closed.