2012-11-19 5 views
10

Wie behandeln Benutzer gemeinsame Konfigurationsoptionen in Grunt für mehrere Projekte? Die Projekte würden einige gemeinsame Konfigurationsoptionen teilen, z. für min, aber auch private oder benutzerdefinierte Konfigurationseinstellungen pro Projekt, z. Nur eines von drei Projekten benötigt less oder hat verschiedene Optionen dafür.Vererbung für allgemeine Konfigurationsoptionen in der Konfiguration von grunt.js

Gibt es eine Möglichkeit, diese allgemeine Konfiguration zwischen den Projekten zu teilen, Vererbung zu verwenden oder eine vorhandene Datei zu importieren, oder muss jedes Projekt alle Einstellungen definieren?

Die Projekte beziehe ich mich in einer Verzeichnishierarchie zu würde wie

wohnen
root 
    module1 
     grunt.js 
    module2 
     grunt.js 
    module3 
     grunt.js 

Gibt es eine Möglichkeit gemeinsame Konfigurationseinstellungen auf der root Ebene zur Verfügung zu stellen?

Antwort

10

Sie können die Konfiguration problemlos in so vielen externen JSON-Dateien speichern, wie Sie benötigen. grunt.file.readJSON wird Ihnen hier helfen. Zum Beispiel:

module.exports = function(grunt) { 

    var concatConf = grunt.file.readJSON('../concat-common.json'), 
     minConf = grunt.file.readJSON('../min-common.json'); 

    // do whatever you want with concatConf and minConf here 
    // ... 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: '<json:grunt-sample.jquery.json>', 
    meta: { 
     banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + 
     '<%= grunt.template.today("yyyy-mm-dd") %>\n' + 
     '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' + 
     '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + 
     ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' 
    }, 

    concat: concatConf, 
    min: minConf 

    // ... 
    }); 

    // Default task. 
    grunt.registerTask('default', 'concat min'); 

}; 

Vergessen Sie nicht, dass ein gruntfile eine regelmäßige JavaScript-Datei in Knoten Umgebung und Konfigurationsoptionen sind regelmäßige JavaScript-Objekte :)

+1

auch ausgeführt ist - 'var config = require (__ dirname +„/ min-common.json ");' –