2015-03-27 13 views
16

Webpack include AMDPlugin per impostazione predefinita, quindi se un modulo verifica AMD prima di CommonJS, verrà utilizzata tale definizione di modulo.C'è un modo per disabilitare AMDPlugin?

if (typeof define === 'function' && define.amd) { 
    define([], factory) 
} else if (typeof exports === 'object') { 
    exports.foo = factory(); 
} 

Mi piacerebbe ignorare del tutto AMD. C'è un modo per farlo nel webpack?

+1

La soluzione: 'modulo: { caricatori: [ {test: /\.js/, caricatore: '? Importazioni definiscono => false'} ] }' –

+1

A volte le definizioni di AMD appena manca alcune strutture di directory. In tal caso, puoi aggiungere il percorso mancante a 'resolve: {fallback: [...]}' e lasciare che il webpack li risolva. Non è necessario alcun caricatore aggiuntivo. – Rockallite

+0

@WiktorKozlik per favore, aggiungi la tua soluzione come soluzione reale, quindi è più facile vederla. –

risposta

15

può essere risolto con imports-loader

Ci sono molti moduli che controllano una funzione definire prima dell'uso CommonJS. Dal momento che il webpack è in grado di entrambi, in questo caso impostano automaticamente AMD, il che può rappresentare un problema se l'implementazione è bizzarra. allora si può facilmente disattivare il percorso AMD scrivendo

imports?define=>false

semplicemente

require('imports?define=>false!myjsfile.js') 

O un approccio migliore è in webpack.config.js si aggiunge un caricatore

loaders: [ { test: /myjsfile.js/, loader: 'imports?define=>false'} ] 
+0

Come farlo quando si hanno più file (quattro per essere precisi) e uno di essi deve essere caricato prima degli altri 3, poiché essi dipendono da esso – codepreneur

+0

@codepreneur semplicemente li richiedono nell'ordine corretto. require ('importa? Define => false! File1.js'); require ('importa? Define => false! File2.js'); require ('importa? Define => false! File3.js'); – kucherenkovova

+0

Ho fatto e non ha funzionato: http://stackoverflow.com/questions/41488225/how-to-disable-amd-on-4-files-and-load-them-in-order-with-webpack? noredirect = 1 # comment70182681_41488225 – codepreneur

0

Considera anche script-loader, come detto, alla fine della Shimming documentation:

Il script loader valuta il codice nel contesto globale, simile a inclusione tramite un tag script. In questa modalità, ogni libreria normale dovrebbe funzionare . richiedono, modulo, ecc. Non sono definiti.

Problemi correlati