2013-07-03 5 views
9

Hier ist (Teil) meine Ordnerstruktur:Duplizierung der "Pfade" -Konfiguration in der RequireJS-Hauptdatei und der r.js-Build-Datei vermeiden?

  • Knoten-Test
    • bower_components
    • build
    • öffentliche
      • main.js
    • build.js

Ausführen des Optimierer mit r.js -o build.js und die folgende Konfiguration funktioniert:

// main.js file 
requirejs.config({ 
    baseUrl: '../bower_components', 
    paths: { 
     'domready': 'domready/ready', 
     'jquery': 'jquery/jquery', 
    } 
}); 

requirejs(['domready', 'jquery'], function (domReady, $) { 
    domReady(function() { 

    }); 
}); 

// build.js file 
({ 
    baseUrl: "bower_components", 
    name: "./almond/almond", 
    include: "./../public/main", 
    out: "build/main.js", 
    paths: { 
     'domready': 'domready/ready', 
     'jquery': 'jquery/jquery', 
    }, 
    preserveLicenseComments: false 
}) 

Wenn ich jedoch paths Konfiguration in build.js entfernen es funktioniert nicht mehr:

Tracing dependencies for: ./almond/almond Error: ENOENT, no such file or directory 'C:\Users\Marco\Documents\Progetti\nodejs-opt\bower_components\domready.js' In module tree: ../public/main

Error: Error: ENOENT, no such file or directory 'C:\Users\Marco\Documents\Progetti\nodejs-opt\bower_components\domready.js' In module tree: ../public/main

at Object.fs.openSync (fs.js:427:18) 

I Ich wäre gerne TROCKEN und vermeide es, zweimal eine Abhängigkeit hinzuzufügen. Ist das möglich?

Antwort

15

Wenn Sie dieselbe Konfiguration von Ihrem Runtime-Code verwenden möchten, den Standort Ihrer Bibliotheken zu finden, können Sie die mainConfigFile Option:

...if you prefer the "main" JS file configuration to be read for the build so that you do not have to duplicate the values in a separate configuration, set this property to the location of that main JS file. The first requirejs({}), require({}), requirejs.config({}), or require.config({}) call found in that file will be used.

Etwas wie folgt aus:

({ 
    baseUrl: "bower_components", 
    mainConfigFile: '/some/path/main.js', // adjust path as needed 
    name: "./almond/almond", 
    include: "./../public/main", 
    out: "build/main.js", 
    preserveLicenseComments: false 
}) 
+0

Perfect !! ! Ich danke dir sehr! – gremo

Verwandte Themen