A continuación se presentan las instrucciones para habilitar la función Meucci en tu plugin de navegador, con opciones tanto para implementaciones estándar como para el framework Plasmo.
En el directorio src, o donde tengas tus archivos js, crea un archivo llamado meucci.js y añade el siguiente código. Asegúrate de que este archivo se incluya en tu directorio de compilación final (/dist).Si seguiste la configuración inicial de webpack config setup, simplemente puedes añadir este archivo al objeto entry en tu configuración de webpack.
import ModuleMeucci from "@mellowtel/module-meucci";let moduleMeucci;(async () => { moduleMeucci = new ModuleMeucci(); await moduleMeucci.init();})();
Asegúrate de que tu directorio de compilación final incluya el archivo meucci.js.Si seguiste la configuración inicial de webpack config setup, simplemente puedes añadir este archivo al objeto entry en tu configuración de webpack.
Crea un archivo build-meucci.js en la raíz de tu proyecto con el siguiente contenido:
const esbuild = require('esbuild')const fs = require('fs')const path = require('path')// Función para esperar a que un directorio existaconst waitForDirectory = async (dir, timeout = 10000) => { const start = Date.now() while (!fs.existsSync(dir)) { if (Date.now() - start > timeout) { throw new Error(`Timeout esperando el directorio: ${dir}`) } await new Promise(resolve => setTimeout(resolve, 100)) }}// Crea la función de compilaciónasync function buildMeucci() { // Compila el paquete await esbuild.build({ entryPoints: ['src/meucci.ts'], // TODO: REEMPLAZAR con la ruta a tu archivo meucci.ts bundle: true, outfile: 'meucci.bundled.js', platform: 'browser', format: 'iife', minify: true, target: ['es2020'], define: { 'process.env.NODE_ENV': '"production"' } }) // Lee el archivo compilado const bundledContent = fs.readFileSync('meucci.bundled.js', 'utf8') // Copia a los directorios de desarrollo y producción const directories = [ 'build/chrome-mv3-dev', 'build/chrome-mv3-prod', 'build/firefox-mv2-dev', 'build/firefox-mv2-prod', 'build/safari-mv2-dev', 'build/safari-mv2-prod', 'build/opera-mv3-dev', 'build/opera-mv3-prod' ] // TODO: REEMPLAZAR con las rutas a tus directorios de desarrollo y producción // Procesa todos los directorios de manera concurrente await Promise.all(directories.map(async (dir) => { try { console.log(`Esperando el directorio: ${dir}`) await waitForDirectory(dir) // Escribe el archivo compilado fs.writeFileSync(path.join(dir, 'meucci.js'), bundledContent) console.log(`Añadido meucci.js a ${dir}`) } catch (err) { console.log(`Saltando ${dir} - ${err.message}`) } })) // Limpia el archivo temporal fs.unlinkSync('meucci.bundled.js')}buildMeucci().catch(err => { console.error(err) process.exit(1)})
Ejecutar el script de compilación manualmente después de tu compilación principal: npm run build:meucci
O añadirlo a tu script de compilación existente con &: "build": "your-existing-build-command & npm run build:meucci"
Esto asegurará que el archivo Meucci esté correctamente empaquetado y copiado a todos los directorios de compilación en la estructura correcta de Plasmo.