2015-04-19 31 views
28

C'è un modo per utilizzare ES6 e moduli con PhantomJS?Come utilizzare ES6 con PhantomJS

È possibile trasferire ogni file da ES6 a ES5 utilizzando Babel, ma è scomodo mantenere alberi paralleli (uno in ES6 e un altro in ES5) e scrivere le importazioni per richiedere i moduli ES5. Sto cercando una soluzione più pulita.

Posso rimuovere tutto il codice di importazione ed esportazione, concatenare i moduli insieme, trasporre il risultato in un singolo file, quindi eseguire in PhantomJS, ma preferirei utilizzare le importazioni e le esportazioni se possibile.

Ho provato a utilizzare Browserify con la trasformazione babelify per traspolare l'albero delle dipendenze ES6 in un singolo file ES5, ma Browserify non riesce a trovare i moduli forniti da PhantomJS come webpage. Ho provato a ignorare tali moduli mettendo nel mio package.json:

"browser": { 
    "webpage": false 
} 

ma importando webpage restituisce un oggetto vuoto al posto del modulo PhantomJS.

C'è un modo pulito per utilizzare i moduli ES6 con PhantomJS?

+0

Quando dici che browserify non riesce a trovare i moduli forniti da PhantomJS come 'webpage', intendi che browserify sta cercando di compilare quei moduli quando non li vuoi, o che vuoi che quei moduli siano compilati e che vengano ignorati ? –

+0

Ho bisogno di 'require ('webpage')', che fa sì che anche Browserify cerchi un modulo nodo chiamato 'webpage'. Genera un errore che non può essere trovato. Non ho bisogno dei moduli compilati. – exupero

risposta

2

L'opzione di browserify --exclude fa ciò di cui ho bisogno.

browserify --exclude webpage -t babelify script.js --outfile compiled.js 
phantomjs compiled.js 

che esclude webpage dal dell'albero delle dipendenze, ma lascia l'importazione in luogo.

+15

Non so perché questo ha risposto alla domanda. Sì, risolve le funzionalità ES6 mancanti in PhantomJS temporaneo. Tuttavia, questo non può essere una soluzione se si desidera eseguire "reali" funzionalità ES6 senza prima la loro transponder. – dude