2016-05-05 8 views
0

einige Code auf den ersten:r.js auswertet 'text' Plugin trotz auf 'stubModules' param

Meine r.js Boot-Datei, die ich laufe durch r.js.cmd -o static/js/boot.js

({ 
    baseUrl: './', 
    preserveLicenseComments: false, 
    name: 'boot', 
    stubModules: ['text'], 
    mainConfigFile: './requirejs/config.js', 
    out: 'build.min.js', 
    //paths: { 
    // 'text': 'plugins/requirejs.text' 
    //}, 
}) 

dann wirft Plugin Ausnahme in Konsole:

Error: Error: Loader plugin did not call the load callback in the build: 
text: 
    text!langJSON: Error: ENOENT, no such file or directory 'C:\web\lang\main' 
    text!/web/downloads/links.json: Error: ENOENT, no such file or directory 'C:\web\downloads\links.json' 

Könnte mir jemand beantworten, warum auswertet 'text' Plugin trotz auf 'stubModules' param in Build-Profileigenschaften r.js?

ich diesen Artikel schon einmal gelesen:

  1. How can I prevent the Require.js optimizer from including the text plugin in optimized files?
  2. Inlining require.js text! using Grunt

Vielen Dank im Voraus.

Antwort

1

sagt nicht, dass der Optimierer alles überspringt, was durch das text Plugin geladen wird. Es sagt nur das Optimierungsprogramm das Plugin mit diesem Code in dem letzten Bündel zu ersetzen:

define('text',{load: function(id){throw new Error("Dynamic load not allowed: " + id);}}); 

Dies ist nützlich, wenn Sie ein Bündel erstellen, die jedes einzelnes Modul, das Ihr Code muss enthalten werden. Wenn dies der Fall ist, dann werden alle durch text geladenen Module bereits im Bundle sein, und somit einschließlich des Codes des text Plugins innerhalb des Bundles ist sinnlos, weil es nicht verwendet wird. (In diesem Fall wird das Plugin zur Build-Zeit verwendet, aber nicht zur Laufzeit.)

Die Fehler, die Sie erhalten sind, weil der Optimierer ist noch versuchen, in Ihrem Bündel enthält diese Module durch text geladen, aber es ist nicht die Dateien finden.

Wenn Sie alles aus dem Paket ausschließen möchten, das durch text geladen wird, können Sie eine paths zu Ihrer Build-Konfiguration hinzufügen, die diese Module als empty: auflistet. Zum Beispiel:

paths: { 
    'web/downloads/links.json': 'empty:', 
    ... 
} 

aber dann müssen Sie das text Plugin zur Laufzeit den Text zu laden, so sollten Sie die stubModules entfernen.