2013-07-03 15 views
9

Oto (część) moja struktura folderów:Unikaj duplikowania konfiguracji "ścieżek" w pliku głównym RequireJS i pliku kompilacji r.js?

  • węzeł test
    • bower_components
    • build
    • publiczne
      • main.js
    • build.js

Running optymalizator z r.js -o build.js i następująca konfiguracja działa prawidłowo:

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

Jednak jeśli usunąć paths konfigurację w build.js to już nie działa:

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 "chciałbym być SUCHĄ, unikając dwukrotnego dodawania zależności. czy to możliwe?

Odpowiedz

15

Jeśli chcesz użyć tej samej konfiguracji z kodem wykonawczym, aby znaleźć lokalizację bibliotek, można użyć opcji mainConfigFile:

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

coś takiego:

({ 
    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 !! ! Dziękuję bardzo! – gremo