2016-05-06 8 views
5

Sto creando due pacchetti Webpack: vendors.dll.js e client.js.Come "spostare" babel-runtime in una DLL dei fornitori di pacchetti Web?

I fornitori vengono creati con webpack.DllPlugin. Comprende tutti i moduli front-end in node_modules/. Funziona alla grande.

Il client include il mio codice app. Utilizza il webpack.DllReferencePlugin per delegare alla DLL i fornitori. Funziona alla grande.

Il client esegue tutto javascript tramite babel-loader. Sto usando il plug-in babel-plugin-transform-runtime, che causa la compilazione di un intero casino di core-js nel mio pacchetto client. Preferirei spostare quella roba nella DLL, poiché non cambierà tanto frequentemente quanto l'app.

AFAIK non è possibile includere solo babel-runtime nella DLL (l'ho provato). Da quello che posso dire, la roba di core-js viene caricata più direttamente, e babel-runtime non ha nemmeno un main da quello che posso dire.

Babel: 6.x Webpack: 1.x

felice di fornire configurazione attuale se necessario per risolvere il problema.

risposta

1

È possibile eseguire la scansione delle directory richieste e includere tutti i file come questo.

const readDir = dir => { 
    const result = []; 
    fs.readdirSync(dir).map(file => { 
    if (file.match(/\.js$/)) result.push(`${dir.replace('./node_modules/', '')}/${file}`); 
    else if (fs.lstatSync(dir + '/' + file).isDirectory()) result.push(...readDir(dir + '/' + file)); 
    }); 
    return result 
} 
const babelRuntimeHelpers = readDir('./node_modules/babel-runtime/helpers'); 
const babelRuntimeCoreJs = readDir('./node_modules/babel-runtime/core-js'); 

e quindi aggiungere quelli per l'array fornitore:

vendor: [ 
    ...babelRuntimeHelpers, 
    ...babelRuntimeCoreJs, 
    ...rest 
] 
Problemi correlati