2012-10-21 13 views
8

In meiner grunt.js Datei muss ichMit Grunzen requirejs mit Mandel Ergebnisse in „definieren ist nicht definiert“

requirejs: { 
    dist: { 
     options: { 
      almond: true, 
      wrap: true, 
      modules: [{name: 'main'}], 
      mainConfigFile: "src/js/main.js", 
      baseUrl: "src/js", 
      dir: "tmp/js", 
      inlineText: true, 
      preserveLicenseComments: false 
     } 
    } 
} 

grunt requirejs:dist Lauf füllt das tmp/js Verzeichnis mit einigen verkleinerten Dateien - unter anderem eine große main.js Datei (alles scheint in dieser Datei gebündelt zu werden wie erwartet) - aber wenn ich diese Datei aufgenommen werden sollen, wie so

<script type="text/javascript" src="tmp/main.js"></script> 

Es ergibt sich eine "Uncaught ReferenceError: define is not defined"

Die Absicht hinter der Verwendung von Mandel war, dass ich keine require.js Datei laden muss, um meine optimierte Datei zu laden - irgendeine Idee, wie man das zum Laufen bringt?

Fußnote: Ich habe bereits geschafft, es auf diese Weise zu tun, außer dass zuvor eine main-built.js Datei kompiliert wurde, aber dies scheint nicht mehr der Fall zu sein (Updates ... -.-)

Antwort

2

Also ich Setup versucht, ein leeres Verzeichnis mit den folgenden Dateien & Ordner

/grunt.js 
/src/js/main.js 
/tmp/js 

Hier ist mein grunt.js:

module.exports = function(grunt) { 

    grunt.loadNpmTasks("grunt-requirejs"); 
    grunt.initConfig({ 
     requirejs: { 
      dist: { 
       options: { 
        almond: true, 
        wrap: true, 
        modules: [{name: 'main'}], 
        mainConfigFile: "src/js/main.js", 
        baseUrl: "src/js", 
        dir: "tmp/js", 
        inlineText: true, 
        preserveLicenseComments: false 
       } 
      } 
     } 
    }); 

    grunt.registerTask("default", "requirejs"); 
}; 

Hier ist mein main.js:

define(function() { 
    console.log('hi'); 
}); 

lief ich diese Befehle in der Konsole:

npm install grunt 
npm install requirejs 
npm install grunt-requirejs 
grunt --gruntfile grunt.js 

Grunt Ausgang dieses:

Running "requirejs:dist" (requirejs) task 
>> RequireJS optimizer finished 
Uncompressed size: 14234 bytes. 
Compressed size: 1265 bytes gzipped. (2633 bytes minified) 

Die resultierende Datei in/tmp/js/main.js hatte Referenzen zu Mandeln. Die Definition-Funktion wurde jedoch nicht erwähnt, da die js minimiert worden war. Mein Anruf an define( wurde in n( umgeschrieben.

Ich vermute, Sie haben möglicherweise Code außerhalb der minimierten Datei, die Anrufe definieren.

Auch in meinem anderen Projekt wird meine mainConfigFile nur als Konfigurationsdatei referenziert und nicht als Modul geladen.

+0

derzeit keine require.js mehr, aber ich werde versuchen, Ihre Vorschläge umzusetzen, sobald ich es wieder in die Hände bekomme - danke für die Antwort :) – Peter