2015-07-06 11 views
12

Sto scrivendo un Key Value Store isomorfo con webpack.Il Webpack condizionale richiede

Questo è attualmente il mio approccio per caricare le librerie, che ovviamente non funziona, perché il webpack vuole risolvere sia require. Qual'è l'approccio giusto?

var db = null; 

if (typeof window === 'undefined') { 
    // node context 
    db = require('level'); 
} else { 
    // browser context 
    db = require('gazel'); 
} 

So che è possibile fornire un pacchetto target. Ma non ho idea di come usarlo.

Grazie!

+1

Dai un'occhiata a questo [domanda SO] (http://stackoverflow.com/questions/28572380/conditional-build -based-on-environment-using-webpack) che si occupa di build condizionale basata sull'ambiente. – r0dney

+0

Grazie, in effetti ha funzionato :) Ho impostato un plug-in __BROWSER__ nel webpack e ora sto usando il normale nodejs (node ​​file.js) e il webpack per la build del browser – vardump

risposta

13

Penso che resolve.alias funzionerebbe per voi. Impostare il modulo db in modo che punti a level o gazel a seconda del build che si sta creando.

+0

Questo è ciò che funziona per me. –

8

webpack.config.js

module.exports = { 
plugins: [ 
    new webpack.DefinePlugin({ 
     "process.env": { 
      BROWSER: JSON.stringify(true) 
     } 
    }) 
]} 

your-universal.js

var db = null; 
if (!process.env.BROWSER) { 
    // node context 
    db = require('level'); 
} else { 
    // browser context 
    db = require('gazel'); 
} 
+2

Solo un punto secondario, ma perché così tante persone hanno questa merda JSON.stringify (vero)? Questo è letteralmente (letteralmente) equivalente a "vero" ... –

+0

@JasonBoyd Mi chiedo che io stesso, penso che sia iniziato come un modo per far sì che le persone prestino attenzione perché con valori di stringa le persone potrebbero facilmente fraintendere la necessità delle citazioni aggiuntive in ''process.env.NODE_ENV': '" produzione "''. Potrebbero erroneamente rimuoverli, specialmente nel caso di '" true "'. – Andy

+0

Non capisco la necessità delle citazioni aggiuntive ... –

Problemi correlati