2016-07-29 13 views
1
befindet.

Ich habe einen Shellbefehl , auf den vom Projektstamm aus zugegriffen werden kann.Führen Sie einen Shellbefehl aus, der sich in einem Projektordner von Grunt-Task

Ich habe auch eine Reihe von Konfigurationsdateien für Grunt, die in ./config Ordner befinden.

Jetzt versuche ich, cordova von Aufgaben auszuführen und es als Alias ​​verwenden möchten, so in Gruntfile.js ich es so haben:

grunt.initConfig({ 
    buildDir: 'build/interim_builds', 
    publishDir: 'build/publish', 
    cordovaCommand: './node_modules/cordova/bin/cordova', 
    ... 

})

Dann wird aus einem Aufgabe ich es wie folgt aus:

mobileApp_create: { 
    cmd: '<%= cordovaCommand %> create <%= mobileAppProjectDir %>' 
} 

Als Folge ich diesen Fehler:

'.' is not recognized as an internal or external command,

Wenn ich ersetzen

cordovaCommand: './node_modules/cordova/bin/cordova' 

mit

cordovaCommand: 'node_modules/cordova/bin/cordova' 

Dann sehe ich diesen Fehler:

'node_modules' is not recognized as an internal or external command,

Also, nehme ich es etwas mit relativen Pfaden sein kann und wie Grunt arbeitet mit Sie? Wo grave ich, um dieses Problem zu beheben, da ich lokale Installation von Cordova verwenden muss, nicht global.

+1

funktioniert es, wenn Sie vollständige Pfade verwenden? – fedorqui

+0

Es funktioniert, wenn ich 'cordova create <% = mobileAppProjectDir%>' verwende, das global installierte cordova läuft, wenn es verfügbar ist, aber nicht funktioniert, wenn ich es als './node_modules/cordova/bin/cordova create <% = mobileAppProjectDir %> ' –

+0

Vielleicht versuchen Sie es stattdessen: https://github.com/csantanapr/grunt-cordovacli. – johnborges

Antwort

0

Sie könnten versuchen, vollständig den Pfad zur Laufzeit zu lösen, auf diese Weise gibt es keine relativen Pfade:

var path = require('path'); 

module.exports = function(grunt) { 

    grunt.initConfig({ 
    buildDir: 'build/interim_builds', 
    publishDir: 'build/publish', 
    cordovaCommand: path.resolve('./node_modules/cordova/bin/cordova'), 

    // ... 
    }); 
    // ... 
};