2013-01-03 16 views
8

Mam kilka ścieżek skonfigurowanych w require-config.js następująco:Użyj pliku konfiguracyjnego RequireJS jako pliku kompilacji?

var require = { 
    baseUrl: '/javascript', 
    paths: { 
     'jquery': 'jquery/jquery-1.8.1.min' 
     // etc. -- several paths to vendor files here 
    }, 
} 

Próbuję uzyskać optymalizację pracy dla wdrożenia. docs powiedzieć muszę mieć build.js, który wygląda mniej więcej tak:

({ 
    baseUrl: 'javascript', 
    paths: { 
     'jquery': 'jquery/jquery-1.8.1.min' 
    }, 
    name: 'main', 
    out: 'main-build.js' 
}) 

Czy istnieje sposób, aby optymalizator przeczytać mój plik konfiguracyjny zamiast (lub oprócz) build.js? Nie chcę ręcznie utrzymywać ścieżek skonfigurowanych tak samo w obu plikach, jeśli ulegną one zmianie.

Starałem się po prostu uruchomić node r.js -o path/to/require-config.js, ale wyrzucił błąd, "niepoprawny: SyntaxError: Nieoczekiwany token var"

Edit: dla wyjaśnienia, mój wymagają-config.js plik jest tylko config, nie mój główny moduł. Zrobiłem to, więc mogłem użyć tej samej konfiguracji, ale załadowałem inny główny moduł podczas testów jednostkowych.

Odpowiedz

11

Będziesz musiał dostosować sposób definiowania opcji konfiguracyjnych. Zrobione from the RequireJS documentation:

In version 1.0.5+ of the optimizer, the mainConfigFile option can be used to specify the location of the runtime config. If specified with the path to your main JS file, the first requirejs({}), requirejs.config({}), require({}), or require.config({}) found in that file will be parsed out and used as part of the configuration options passed to the optimizer:

Więc w zasadzie można wskazać plik r.js build do opcji konfiguracyjnych, które również zostaną udostępnione w przeglądarce.

Będziesz musiał skorzystać z the mainConfigFile option

+0

Tak więc w moim html dwa znaczniki script (require-config.js, require.js z data-main) staną się trzy (require.js z NO data -main, require-config.js i main.js). A następnie przebuduję plik konfiguracyjny tak, aby wywoływał 'require.config()' zamiast ustawiać 'var config'. Czy to prawda? – keithjgrant

+0

W twoim scenariuszu, który chciałby zachować konfigurację na własną rękę, powiedziałbym tak, to byłby sposób. –

+1

Hmm. Pomimo tego, co mówi dokumentacja, nadal wymaga to mojego pliku konfiguracyjnego w formacie JSON: "Błąd: nie można użyć konfiguracji w mainConfigFile /opt/shootq/nimbus/public/javascript/require-config.js, ponieważ nie można jej poprawnie oszacować podczas pracy w optymalizatorze, spróbuj użyć tylko konfiguracji, która jest również poprawnym JSON, lub nie używaj mainConfigFile i zamiast tego skopiuj potrzebne wartości konfiguracyjne do pliku kompilacji lub argumenty wiersza poleceń podane do optymalizatora. " – keithjgrant

0

Dla porównania nawzajem:

https://github.com/jrburke/r.js/blob/master/build/example.build.js

ustawienia kompilacji (nie trzeba powtarzać config.js lib inkluzje tutaj):

baseUrl: 'app', 
name: 'assets/js/lib/almond', // or require 

// Read config and then also build it into the app 
mainConfigFile: 'app/config.js', 
include: ['config'], 

// Needed for almond (and does no harm for require) 
wrap: true, 
Powiązane problemy