2012-10-21 10 views
8

Nel mio file grunt.js HoUtilizzando grugnito requirejs con i risultati dei mandorli "definire non è definito"

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 
     } 
    } 
} 

Esecuzione grunt requirejs:dist popola la directory tmp/js con alcuni file minified - tra gli altri, un grande file main.js (tutto sembra essere impacchettato in questo file come previsto) - tuttavia quando voglio includere questo file in questo modo

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

Essa si traduce in un "Uncaught ReferenceError: define is not defined"

L'intenzione di utilizzare mandorla era che non ho bisogno di caricare un file require.js per caricare il file opimizzato - qualche idea su come farlo funzionare?

nota: Ho già riuscito a fare in questo modo, tranne che in precedenza un file main-built.js è stato compilato, ma questo non sembra essere il caso più (aggiornamenti ... -.-)

risposta

2

Così ho cercato di impostare un dir vuota con i seguenti file & cartelle

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

Ecco il mio 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"); 
}; 

Ecco il mio main.js:

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

ho eseguito questi comandi nella console:

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

uscita Grunt questo:

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

Il file risultante in/tmp/js/main.js aveva riferimenti a mandorla. Non ha menzionato la funzione define anche perché il js era stato minimizzato. La mia chiamata a define( è stata riscritta a n(.

Sospetto che si possa avere codice al di fuori del file ridotto a icona definito.

Inoltre, nel mio altro progetto il mio mainConfigFile viene fatto riferimento solo come un file di configurazione e non caricato come un modulo.

+0

attualmente non usa più require.js, ma cercherò di implementare i tuoi suggerimenti non appena avrò messo le mani su di nuovo - grazie per la risposta :) – Peter

Problemi correlati