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.
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:
@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 archivopackage-lock.json
.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 arreglomainFields
de la siguiente manera:alias
en Rollup para asignar manualmente la ruta de importación al punto de entrada correcto. Por ejemplo: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!