2013-08-12 9 views
20

Ist es möglich, Grunt-Konfigurationsdateien in ein Unterverzeichnis des Projekts zu setzen? Ich möchte dies tun, um die Dinge besser zu organisieren.Put Grunt in ein Unterverzeichnis

z.

  • myproject/Grunzen/Gruntfile.js

  • myproject/Grunzen/package.json

  • myproject/Grunzen/node_modules/

Ich habe Probleme laufen Befehle von Gruntfile.js unter dieser Konfiguration. Kann Grunt das Suchen nach dem übergeordneten Verzeichnis behandeln? Vielleicht mache ich es falsch

sass: { 
    dev: { 
     files: { 
      "../style.css": "../scss/style.scss" 
     } 
    } 
} 

Wenn ich laufen diese Grunt nur zu zucken scheint nicht zu verstehen, dass ich es in das übergeordnete Verzeichnis suchen möchten ...

Source file "scss/style.scss" not found. 

Antwort

27

Ja, sollte dies möglich, aber Sie werden wahrscheinlich die Befehlszeilenoption grunt.file.setBase method oder --base verwenden möchten, damit die Aufgaben genauso funktionieren, wie Sie die Gruntdatei im Stammverzeichnis des Projekts abgelegt haben. Andernfalls treten verschiedene Probleme mit Tasks auf, die standardmäßig nicht in Pfade außerhalb des Arbeitsverzeichnisses geschrieben werden. Zum Beispiel die force option auf dem grunt-contrib-clean-Plugin.

Hier ist ein Beispiel, das die sample Gruntfile from the Getting Started page modifiziert diese Methode zu verwenden:

module.exports = function(grunt) { 

    // if you put the call to setBase here, then the package.json and 
    // loadNpmTasks paths will be wrong!!! 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    uglify: { 
     options: { 
     banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' 
     }, 
     build: { 
     src: 'src/<%= pkg.name %>.js', 
     dest: 'build/<%= pkg.name %>.min.js' 
     } 
    } 
    }); 

    // Load the plugin that provides the "uglify" task. 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 

    // now that we've loaded the package.json and the node_modules we set the base path 
    // for the actual execution of the tasks 
    grunt.file.setBase('../') 

    // Default task(s). 
    grunt.registerTask('default', ['uglify']); 

}; 

ich SASS nicht verwenden, so kommentiert nicht, ob etwas mit Ihrer Aufgabe Config falsch sein könnte, aber die oben funktioniert als eine Modifikation des Getting Started-Beispiels.

+0

Danke für Ihre Antwort. Kannst du mir ein Beispiel geben? Sobald ich ein Beispiel sehe, werde ich es verstehen. Ich habe die Dokumentation gelesen, aber leider kein Beispiel. Wäre es etwas wie 'grunt.file.setBase ('../');'? Ich habe diese Zeile zu meiner Datei hinzugefügt, aber das macht keinen Unterschied. – SparrwHawk

+0

Ignorier mich, ich bin ein Idiot. Meine Gruntfile.js war im falschen Verzeichnis.grunt.file.setBase ('../'); war in der Tat der Weg zu gehen. Danke – SparrwHawk

+0

@SparrwHawk siehe bearbeitete Antwort – explunit

Verwandte Themen