Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
¿Cómo puedo empaquetar un WebWorker para usarlo en una biblioteca portátil?

Tengo un paquete de biblioteca que proporciona algunos ganchos que, a su vez, realizan cálculos costosos en subprocesos de trabajo:

 // example/App.tsx import {useFancyPants} from '@fancy-pants/hooks'; ... useFancyPants("kittens"); // Help! I need to call a worker thread ...
 // fancy-pants/src/hooks.ts export function useFancyPants() { const worker = new Worker(new URL('../worker/fancy.ts', import.meta.url)); worker.sendMessage(...); worker.onMessage(...); }
 // fancy-pants/src/worker/fancy.ts self.onMessage(...);
 // fancy-pants/src/index.tsx import React from 'react'; import ReactDOM from 'react-dom'; import Demo from './Demo'; ReactDOM.render(<Demo />, document.getElementById('root'));
 // fancy-pants/src/Demo.tsx Demo.tsx import {useFancyPants} from './hooks' ... useFancyPants("rainbows") ...
 // fancy-pants/webpack.config.js const path = require("path") module.exports = { entry: "./src/Demo.tsx", output: { filename: "fancy.js", path: path.join(__dirname, "./dist/"), }, resolve: { extensions: [".ts", ".tsx", ".js"], modules: ["node_modules"] }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: ["babel-loader"], }, { test: /\.tsx?$/, exclude: /node_modules/, use: ["ts-loader"], }, ], }, }

Dentro fancy-pants , la aplicación Demo funciona correctamente. Webpack compila el trabajador fancy-pants/worker/fancy.ts en fancy-pants/dist/src_worker_fancy.worker.js , donde está disponible para el new Worker(new URL('../worker/fancy.ts', import.meta.url)); código (aunque no está en la carpeta fancy-pants/public/ ... esta es una magia más profunda que no entiendo). Se requiere un poco más de configuración para conectar todo esto, pero estoy tratando de mantener este ejemplo lo más simple posible.

¿Cuál es la mejor manera de hacer que useFancyPants funcione desde un paquete diferente , por ejemplo, example/App.tsx ? Es decir, cuando importo y uso useFancyPants dentro de mi aplicación de example , ¿cómo se agrupa y luego se comunica con un subproceso de trabajo? Idealmente, preferiría no tener que compilar manualmente y guardar el trabajador fancy-pants en example/public , aunque supongo que es una opción. (Tenga en cuenta que estoy en un monorepo, si eso ayuda, aunque idealmente me gustaría que fancy-pants sea un paquete que se pueda importar y usar desde cualquier lugar).

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda