2014-12-15 29 views
20

ES6 modüllerini nasıl birleştirebilirim?ES6 modüllerini nasıl birleştiririm?

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

Ne demek '// Bu dosya artık birleştirilmiş senaryoya dahil değil. Bir dosyadan içe aktarmanız veya içeriğinin satır içi içermesi gerekir. Bar'ı tanımlamak için Bar'ı ayrı bir dosya olmadan içeri aktarmaya mı çalışıyorsunuz? – DaveS

+0

Concat ile ne demek istiyorsun? İki modülün her ikisini de ihraç eden üçüncü bir dosya oluşturmanın nesi yanlış? –

+0

@DaveS Yani "javascripts/bar" dosyası artık birleştirme sonrasında var (çünkü birleştirilmiş oldu). – Ben

cevap

1

Sana http://webpack.github.io bakmak ve sonra babel ile birleştirmek öneririz. alternatif

yalnız babel ile yapabilirsiniz:

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

+2

Babel cli ile yalnız başına nasıl ulaşılacağını tarif edebilir misin? – Gabriel

+0

Babel'in dosyaları birleştirebilme yeteneği var gibi görünüyor, ancak içe/içe aktarmaya gerek kalmıyor. Bu içe aktarma/arama çağrıları, birleştirilmiş dosyada hala mevcut olacaktır. Tüm bu betik bağımlılıklarını çözmesi için Webpack gibi bir şey kullanmanız gerekiyor gibi görünüyor. –

4

Eğer tarayıcıları ile kullanabilirsiniz, böylece içten ES6 modülleri kullanmayan tek bir JavaScript dosyası oluşturmak olduğunu ne yapmak istediğini ise/node bugün, o zaman ben Esperanto kullanmanızı öneririz (tam açıklama, ben projenin bir bakıcısıyım). Bu dosya, olmadan bütün dosyaları bir araya getirerek, tarayıcı veya webpack gibi bir şeye benzeyen bir yükleyici kullanmanıza olanak tanır. Bu genellikle daha küçük kodlar (yükleyici yok), daha iyi ölü kod giderme (Google Closure Compiler veya UglifyJS gibi bir minyatür kullanırken) ve JS yorumlayıcısının sonucu optimize edebildiği için daha iyi performans sağlar.

İşte bir örnek kullanımı, ama plenty of tools to integrate Esperanto into your workflow olduğunu unutmayın:

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); 
}); 

Bu örnek wiki page on bundling ES6 modules alınır.

+2

link esperantojs.org, porno/spam sitesine gider –

İlgili konular