Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

117
Views
Ignore o reemplace las importaciones de dependencias al agrupar con Rollup

Estoy agrupando una biblioteca JS usando Rollup. Esta biblioteca depende de @tensorflow/tfjs-core .

En el código de tfjs, hay una función que obtiene una URL. Si está en el entorno del navegador, utiliza la función de fetch global; si no es así, intenta importar node-fetch .

Algo entre estas líneas:

 fetch(path: string, requestInits?: RequestInit): Promise<Response> { if (env().global.fetch != null) { return env().global.fetch(path, requestInits); } if (systemFetch == null) { systemFetch = require('node-fetch'); } return systemFetch(path, requestInits); }

Mi biblioteca está hecha para ejecutarse en el navegador, por lo que siempre usa la función de fetch global. Sin embargo, Rollup aún incluye los requisitos de node-fetch en los activos de mi biblioteca.

No debería ser un problema, pero algunos consumidores informan errores cuando usan la biblioteca en un proyecto React que usa un paquete web:

No se pudo compilar.

./node_modules/[my lib]/index.js No se puede encontrar el módulo: 'node-fetch'. Asegúrese de que este paquete esté instalado.

Puede instalar este paquete ejecutando: npm install node-fetch.

La pregunta es: ¿hay alguna manera de decirle a Rollup que no incluye este paquete?

Pensé en reemplazar require('node-fetch') por undefined después de generar el paquete, pero se siente como un truco sucio. ¿Alguna otra sugerencia?

PD: Creo que marcar node-fetch como external en proyectos de consumo solucionaría el problema, pero dado que no uso node-fetch en mi lib, sería bueno eliminarlo de la salida final.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Otros administradores de paquetes pueden incluir o excluir archivos según el entorno, test , development , production , etc.

Hay varias formas de implementar esto, incluso llegando a

 # Makefile ENVIRONMENT ?= test ROLLUP = $(which rollup) ENVSUBST = $(which envsubst) rollup.config.js: src/$(ENVIRONMENT) ${ENVSUBST} < $@ > $^ ${ROLLUP} $^ -o $(ENVIRONMENT).js

Si creó archivos con el nombre de sus entornos, podría compilarlos usando

 make -e environment=browser

No espero que mi código funcione, solo para expresar ideas.

about 4 years ago · Juan Pablo Isaza Report

0

Existe esta loc que se usa para excluir la búsqueda de nodos del paquete. Podría considerar un enfoque similar en su configuración de resumen. (Creo) Si agrega eso, node-fetch será/no debería ser parte de su biblioteca minimizada.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!