2012-07-13 10 views
12

R.js non sta caricando il mio shim, quindi jQuery si sta caricando prima che tinyMCE e tiny inizino a essere inizializzati prima del caricamento. Come posso ottenere lo spessore di lavorare ?:Require.js + R.js Optimizer Ignorare lo spessore

build-js.js:

var requirejs = require('requirejs'); 
var config = { 
    mainConfigFile: '../js/main.js', 
    include: [], 
    name: 'main', 
    out: '../js/build/build.js', 
}; 

    requirejs.optimize(config, function (buildResponse) { 
    var contents = fs.readFileSync(config.out, 'utf8'); 
}); 

main.js:

require.config({ 
    paths: { 
     jQuery: 'common/libs/jquery/jquery-min', 
     TinyMCE: 'common/libs/tinyMCE/tiny_mce', 
    }, 
    shim: { 
     'jQuery': { 
      deps:['TinyMCE'], 
      exports: '$', 
     }, 
     'jQueryUi': { 
      deps: ['jQuery'] 
     }, 
     'jQuerySelectmenu': { 
      deps: ['jQuery', 'jQueryUi'] 
     }, 
     'jQueryAutosize': { 
      depts: ['jQuery'] 
     }, 
     'Underscore': { 
      exports: '_' 
     }, 
     'Backbone': { 
      deps: ['Underscore', 'jQuery'], 
      exports: 'Backbone' 
     } 
    } 
}); 

require(['common/src/app'], function (App) { 
    App.initialize(); 
}); 
+1

Il require.config() non viene analizzato be r.js. Dovresti creare un file di configurazione per r.js. Guarda qui: http://stackoverflow.com/questions/11323414/i-am-struggling-with-therequirejs-optimizer-and-non-amd-modules/11454409#11454409 – devundef

+1

Non sul punto, ma ti ho appena scoperto può usare [lodash] (https://github.com/bestiejs/lodash/) anziché il carattere di sottolineatura e perdere lo spessore del trattino basso. –

+0

Vorresti davvero che il piccolo venga caricato prima di jQuery? – devundef

risposta

11

questo problema è già fissato a r.js 2.1.11

è sufficiente posizionare

wrapShim: true nella configurazione build.

github issue

configuration example

+1

Corretto collegamento al problema: https://github.com/jrburke/r.js/issues/623 – Victor

6

ho incontrato alcuni problemi simili di recente che mi avevano un po ' perplesso. Non ho familiarità con il codice TinyMCE, ma vedo che non l'hai sfogliato.

Gli spessori (in genere) non possono dipendere dalle librerie di stili AMD. Non sono sicuro che TinyMCE rientri nella categoria di stile del modulo AMD o meno, ma se lo fa ... sei nei guai. In caso contrario, è necessario anche shimarlo.

https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

avvertimento importante per config "shim":

Utilizzare solo altri moduli "shim" come dipendenze per gli script spessorato, o librerie AMD che non hanno dipendenze e chiamare definiscono() dopo che anche creare un globale (come jQuery o lodash). Altrimenti, se si utilizza un modulo AMD come dipendenza per un modulo di configurazione shim, dopo una generazione, il modulo AMD potrebbe non essere valutato fino a quando non viene eseguito il codice spaccato nella generazione e si verificherà un errore. La soluzione definitiva consiste nell'aggiornare tutto il codice con shim per avere chiamate definitive() AMD.