2015-06-29 14 views
9

Sto scrivendo una piccola libreria di espansione di testo javascript. La biblioteca utilizza un web worker ed è impacchettata con bower. Quando viene installato tramite bower, lo script parser non viene trovato (ottengo un 404) perché il browser sembra relativo alla radice del sito che consuma e non è relativo allo script bower da cui viene utilizzato (entrambi gli script sono contenuti nello stesso cartella). Questo sembra essere il correct behavior.Web Worker - Come fare riferimento al file worker quando confezionato con Bower

La mia domanda: come devono essere usati i lavoratori in combinazione con bower in modo tale che gli script richiesti possano essere caricati senza codificare i bower_components/path?

function Expander(args) { 
    ... 
    this.parser = 'parser.js'; 
    this.worker = new Worker(this.parser); 
    ... 
} 
+2

Non ho familiarità con Bower, ma come ho capito: è possibile aprire il file '.bowerrc' json ottenere il valore della proprietà' directory' e allegare a 'this.parser'. Se Directory non è specificato, è necessario hardcode 'bower_components' perché bower lo ha anche codificato. –

+1

Stai utilizzando qualcosa per creare e impacchettare i tuoi script (browserify, ecc.)? Potresti averlo (o grugnire o gulp) spostare i file parser nel posto giusto nella directory di distribuzione. Come stai includendo gli script nella pagina, sotto quale percorso? – lemieuxster

risposta

2

Vorrei usare Grunt. Gulp potrebbe essere un po 'più facile a partire dal momento che può essere eseguito il debug ma manca un componente chiave per le tue esigenze. Ci sono una serie di librerie wiredep, build-file e watch che ti permetteranno di fare ciò che vuoi fare. Wiredep controlla la directory di bower e aggiungerà automaticamente i file js per le dipendenze in bower.json nel html e watch può essere configurato per guardare qualsiasi tipo di file in qualsiasi directory per una modifica. Build-file consente di configurare un modello e passarlo a variabili che utilizzerà per creare dinamicamente un file js. È quindi possibile utilizzare le abilità di grunt per ottenere il percorso corretto dell'applicazione e indirizzarlo al file.

+2

Questo non ha impatto sull'utente finale e non sulla libreria distribuibile? Supporrei che l'applicazione che consuma avrebbe bisogno di usare grunt, ma non necessariamente questa libreria. Qualsiasi chiarimento sarebbe gradito –

+1

Il client che consuma avrebbe bisogno di essere grugnito per farlo funzionare. Detto questo, potrebbe essere automatizzato estrarre le configurazioni da un file nella tua distribuzione e inserirle nel file grunt del consumatore. – tuckerjt07