2013-01-03 18 views
8

Ho un po 'percorsi configurati in require-config.js come segue:Utilizzare il file di configurazione RequireJS come file di build?

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

sto cercando di ottenere l'ottimizzazione di lavoro per la distribuzione. Il docs dire che dovrei avere un build.js che sembra qualcosa di simile:

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

C'è un modo per avere l'ottimizzatore leggere il mio file di configurazione invece di (o in aggiunta a) build.js? Non voglio dover mantenere manualmente i percorsi configurati allo stesso modo in entrambi i file se cambiano.

ho cercato di correre solo node r.js -o path/to/require-config.js, ma ha gettato un errore, "deforme: SyntaxError: imprevisto gettone var"

Edit: il file di chiarimenti, il mio richiedere-config.js è solo la configurazione, non il mio modulo principale L'ho fatto in modo da poter utilizzare la stessa configurazione, ma caricare un modulo principale diverso durante il test dell'unità.

risposta

11

È necessario regolare il modo in cui sono definite le opzioni di configurazione. Preso 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:

Quindi, in pratica si può puntare il file r.js build le opzioni di configurazione che sarà anche essere condivisi con il browser.

Sarà necessario fare uso di the mainConfigFile option

+0

Quindi suppongo che nel mio html i due tag di script (require-config.js, require.js con data-main) diventeranno tre (require.js con NO dati -main, require-config.js e main.js). E poi ristrutturerò il file di configurazione per invocare 'require.config()' invece di impostare 'var config'. È giusto? – keithjgrant

+0

Nel tuo scenario di voler mantenere la configurazione da sola, direi sì, sarebbe il modo. –

+1

Hmm. Nonostante ciò che dice la documentazione, richiede comunque che il mio file di configurazione sia in formato JSON: "Errore: la configurazione in mainConfigFile /opt/shootq/nimbus/public/javascript/require-config.js non può essere utilizzata perché non può essere valutata correttamente durante l'esecuzione nell'ottimizzatore. Prova solo a utilizzare una configurazione che è anche JSON valida, oppure non utilizzare mainConfigFile e copia i valori di configurazione necessari in un file di build o argomenti della riga di comando forniti all'ottimizzatore. " – keithjgrant

0

Per riferimento di altri:

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

Le impostazioni di generazione (non c'è bisogno di ripetere le vostre config.js inclusioni lib qui):

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, 
Problemi correlati