Optimiser / construire des modules sous répertoires parallèles en utilisant le même fichier de configuration dans requirejs

StackOverflow https://stackoverflow.com/questions/8982133

  •  12-11-2019
  •  | 
  •  

Question

J'ai le sentiment que le titre pourrait ne pas être explicatif :)

Installer

Supposons que j'ai la structure suivante:

enter image description here

app.js Les fichiers sont des modules de bootstrap / entrée principaux pour les applications qui ressemblent à ceci:

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

qui travaillent tous les deux avec approprié index.html des dossiers.

J'ai un fichier de configuration de build requisejs (supposez un placement correct lié aux chemins) pour app01:

({
    appDir: 'apps/app01',
    baseUrl: '.',
    dir: 'built_apps/app01',
    optimize: 'closure',
    paths: {
    },

    modules: [
        {
            name: 'app'
        }
    ]
})

Ce qui fonctionne très bien. Fichier similaire (remplacement app01 avec app02) fonctionne très bien pour app02.

Problème / cible

Maintenant, je veux pouvoir exécuter l'outil de build requisejs (en utilisant la fermeture Google avec Rhino sous ANT, pas que cela compte vraiment dans ce cas) pour les deux app01 et app02 applications utilisant le même Créer un fichier de configuration et, de préférence, sans réellement répertorier toutes les applications par son nom (car le nombre et les noms peuvent varier dans le temps).

Fondamentalement, je m'attends (ou plutôt à l'espoir) à avoir quelque chose comme ceci:

({
    appDir: 'apps',
    baseUrl: '.',
    dir: 'built_apps',
    optimize: 'closure',
    paths: {

    },

    modules: [
        {
            name: 'app*/app' // notice the wildcard
        }
    ]
})

qui reviendrait built_apps Répertoire, trouvez toutes les applications sous applications * / applications et optimisez chacune d'entre elles.

Je sais que je peux utiliser Ant pour créer un tel fichier de configuration de build sur la volée par application, exécuter la construction, puis nettoyer, mais je préfère avoir la solution requisejs.

Existe-t-il un moyen de faire quelque chose comme ça avec requirejs?

Était-ce utile?

La solution

Il n'y a pas de configuration de wildcarding intégrée pour requirejs. D'une manière ou d'une autre, vous aurez besoin de code pour le faire. Je vais observer que ce que vous demandez ici revient à traduire un générique en une sorte d'itération implicite sur les objets du module, semblable à ce moustache.js Fournit ses modèles. OMI, c'est une approche assez fragile et limitée dans ce contexte.

Au lieu de cela, je recommande de générer votre modules Array programmatiquement en JavaScript dans la configuration de build. Rappelons que la configuration de build est JavaScript, pas seulement une structure de données JSON. Cela vous donne des capacités de script sophistiquées là-bas.

J'ai fait ce type de script dans la configuration de build pour le gemme requisejs-rails. Voici un Exemple d'escroquerie qui montre quoi r.js verrait au moment de la construction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top