2014-12-15 34 views
20

Come posso concatenare i moduli ES6?Come concatenare i moduli ES6?

var foo = 2; // This would normally be scoped to the module. 
export function Bar() {} 

// ...concatenate... 

import { Bar } from 'javascripts/bar' //This file no longer exists in the concatenated scenario. 
export function Bam() {} 
+0

Che cosa intendete per '// Questo file non esiste più nello scenario concatenato.? Devi importarlo da un file o includerne il contenuto in linea. Stai cercando di importare una barra senza un file separato per definire la barra? – DaveS

+0

Cosa intendi per concat? Cosa c'è di sbagliato con la creazione di un terzo file che esporta entrambi gli elementi dei due moduli? –

+0

@DaveS Significo che il file 'javascripts/bar' non esiste più dopo la concatenazione (perché è stato concatenato). – Ben

risposta

1

vorrei suggerire che si dà un'occhiata al http://webpack.github.io e poi combinarla con Babel.

in alternativa è possibile farlo con il solo babel:

https://babeljs.io/docs/usage/cli/

+2

Puoi descrivere come ottenerlo con Babel Cli da solo? – Gabriel

+0

Sembra che babel abbia la possibilità di concatenare i file, ma non importerà/richiederà in linea. Quelle chiamate import/require saranno ancora presenti nel file concatenato. Sembra che tu abbia davvero bisogno di usare qualcosa come Webpack per farlo risolvere tutte quelle dipendenze dello script. –

4

Se ciò che si vuole fare è creare un unico file JavaScript che non utilizza internamente moduli ES6, in modo che si può utilizzare con i browser/nodo oggi, quindi mi consiglia di utilizzare Esperanto (completa divulgazione, io sono un manutentore del progetto). Ti permette di creare un bundle che concatena tutti i file insieme senza l'uso di un caricatore come se avessi usato qualcosa come browserify o webpack. Di solito questo si traduce in un codice più piccolo (senza caricatore), una migliore eliminazione del codice morto (quando si utilizza un minificatore come Google Closure Compiler o UglifyJS), e prestazioni migliori come l'interprete JS è in grado di ottimizzare il risultato.

Ecco un esempio di utilizzo, ma notare che ci sono plenty of tools to integrate Esperanto into your workflow:

var fs = require('fs'); 
var esperanto = require('esperanto'); 

esperanto.bundle({ 
    base: 'src', // optional, defaults to current dir 
    entry: 'mean.js' // the '.js' is optional 
}).then(function (bundle) { 
    var cjs = bundle.toCjs(); 
    fs.writeFile('dist/mean.js', cjs.code); 
}); 

Questo esempio è tratto dal wiki page on bundling ES6 modules.

+2

link esperantojs.org va a qualche sito porno/spam –

Problemi correlati