Ottimizza/build moduli in directory parallele utilizzando lo stesso file di configurazione in Requisitijs
-
12-11-2019 - |
Domanda
Ho la sensazione che il titolo potrebbe non essere esplicativo :)
Impostare
Supponiamo di avere la seguente struttura:
dove app.js
I file sono principali moduli di bootstrap/voce per le applicazioni che sembrano questo:
app01
require.config({});
require([
'app/component1.js'
],
function(component){
// do something with component1
});
app02
require.config({});
require([
'app/component2.js'
],
function(component){
// do something with component2
});
che lavorano entrambi con appropriato index.html
File.
Ho un file di configurazione di build requisitejs (assumere un corretto posizionamento relativo ai percorsi) per app01:
({
appDir: 'apps/app01',
baseUrl: '.',
dir: 'built_apps/app01',
optimize: 'closure',
paths: {
},
modules: [
{
name: 'app'
}
]
})
Il che funziona bene. File simile (sostituzione app01
insieme a app02
) funziona bene per app02.
Problema/target
Ora voglio essere in grado di eseguire lo strumento Build Recoids (usando la chiusura di Google con Rhino sotto ANT, non che in questo caso è davvero importante) per entrambi) app01 e app02 applicazioni utilizzando lo stesso Build File di configurazione e, preferibilmente, senza effettivamente elencare tutte le app per nome (poiché il numero e i nomi possono variare nel tempo).
Fondamentalmente mi aspetto (o piuttosto spero) che abbia qualcosa del genere:
({
appDir: 'apps',
baseUrl: '.',
dir: 'built_apps',
optimize: 'closure',
paths: {
},
modules: [
{
name: 'app*/app' // notice the wildcard
}
]
})
che si sarebbe investito built_apps
Directory, trova tutte le app in app*/app e ottimizzarne ognuna di esse.
So di poter usare ANT per creare tale file di configurazione di build al volo per app, eseguire build contro di essa e quindi ripulire, ma preferirei avere una soluzione richiedente.
C'è un modo per fare qualcosa del genere con i requisiti?
Soluzione
Non esiste una configurazione di cardioni incorporati per requisiti. In un modo o nell'altro, avrai bisogno di codice per farlo. Osserverò che ciò che stai chiedendo qui equivale a tradurre un jolly in una sorta di iterazione implicita sugli oggetti del modulo, simile a ciò Mustache.js Fornisce i suoi modelli. IMO, questo è un approccio abbastanza fragile e limitato in questo contesto.
Invece, ti consiglio di generare il tuo modules
Array programmaticamente in JavaScript proprio nella configurazione build. Ricordiamo, la configurazione build è JavaScript non solo una struttura di dati JSON. Questo ti dà sofisticate capacità di scripting lì.
Ho fatto questo tipo di scripting nella configurazione build per il GEM di Requisito-Rails. Ecco un Esempio Gist Questo mostra cosa r.js
vedrebbe al momento della costruzione.