Domanda Mappe di origine in Ruby on Rails tramite ruote dentate


Vorrei aggiungere il supporto per la mappa di origine su un'applicazione di rails 3.2 su cui sto lavorando. Per quanto ne so, la generazione di mappe sorgente non è supportata da Sprockets e dalla sua pagina github sembra che la funzione sia pianificata per 4.0. Sto lavorando con Sprockets 2.2 e penso che la patch per scimmia sia l'unica strada da percorrere. Il modulo Processing sotto il modulo Sprockets principale dà accesso alla funzione js_compressor che può essere patchata per generare una mappa sorgente per un singolo file. Ma, non so come aggiungerlo quando i file JS si combinano. Sto usando Uglifier 2.4 come compressore.

Il progetto ha una miscela di file CoffeeScript, JS ed EJS. Quindi, penso che questo sia il modo in cui i pignoni li compileranno insieme. Innanzitutto converte Coffeescript ed EJS in JS, quindi usa js_compressor per comprimere singoli file e successivamente concatenarli in gruppi. Ora, come la mappa di origine per più file combinati allo stesso file è un singolo file. Quindi, avrò bisogno di cambiare un po 'il processo di compilazione e far correre il js_compressor sui file, una volta terminata la concatenazione. Quindi, qualcuno può aiutare con questo? Sarebbe di grande aiuto anche spiegare il processo di compilazione delle ruote dentate, i moduli utilizzati e le funzioni coinvolte. Al momento non mi interessa creare file di mappe sorgente per il codice CoffeeScript. Farebbe anche la mappatura ai file JS convertiti.

Inoltre, vorrei aggiungere se c'è qualche gemma che può aiutare con questo sarebbe il benvenuto.


28
2017-08-04 15:13


origine


risposte:


Rails 4 non ha nemmeno mappe di origine.

Per quanto ne so, e da oggi, questo sarà solo parte dei binari 5.

Un approccio veramente carino per risolvere questo problema è ora implementato nel discorso di @SamSaffron e spiegato qui: https://github.com/discourse/discourse/blob/master/lib/tasks/assets.rake

L'essenza, aggiungere un'attività "prima" al processo di pre-compilazione delle ruote dentate e eseguire l'hacking nel processo di compilazione per generare i file e le direttive di sourcemapp.

La cosa bella in questo approccio è che non si perdono cose da file che sono sia js che erb (* .js.erb), che è piuttosto comune nei binari.

Penso che rattoppare l'intera pipeline degli ingranaggi sia un po 'abusivo e rischioso.


9
2017-09-22 07:37