2016-04-22 9 views
0

Ich habe eine Grunt-Aufgabe, um die Bereitstellung meiner Webanwendung auf Webserver zu automatisieren. auf meinem Webserver habe ich drei Wege:Vorschlag Bereitstellungspfad in einer Grunt-Aufgabe

  • /www/myApp (Produktion)
  • /www/myApp_rc

Ich habe eine package.json Datei

{ 
... 
    "ftpDeployPath":"myApp_rc" //or /www/myApp 
... 
} 

und das ist meine Aufgabe

{'ftp-deploy': { 
       toMyServer: { 
        auth: { 
         host: '10.7.88.87', 
         port: 21, 
         authKey: 'key1' 
        }, 

        src: 'deploy', 
        dest: '<%= pkg.ftpDeployPath %>', 
        forceVerbose: true 
       } 
      } 

}

Wenn ich bereitstellen möchten, bearbeiten Sie jedes Mal, ich habe zu prüfen und schließlich package.json Datei. Gibt es eine Möglichkeit, eine Eingabeaufforderung (bu grunt console) anzuzeigen, damit ich den richtigen Bereitstellungspfad auswählen kann?

Antwort

1

Sie können wahrscheinlich versuchen, grunt-prompt Aufgabe mit "Eingabe" Frage Typ und Ihre "ftpDeployPath" als "Config". Oder modifizieren Sie Ihre gruntfile, um Befehlszeilenoptionen (http://gruntjs.com/frequently-asked-questions#dynamic-alias-tasks) zu verwenden und führen Sie Ihre Aufgaben als externe Werkzeuge aus WebStorm (Einstellungen | Werkzeuge | Externe Werkzeuge) aus - Sie können $ Prompt $ -Makro zu den Werkzeugparametern hinzufügen, um beim Ausführen eine Aufforderung für den Optionswert zu erhalten Ein Werkzeug

0

Mit einer Kombination aus Befehlszeilenargumenten und einer benutzerdefinierten Aufgabe können Sie die Konfiguration für Aufgaben ändern, bevor Sie sie ausführen. Beginnen wir zuerst mit dem Ändern der Vorlagenzeichenfolge für dist; ändert sie einen grunt.option() param zuzugreifen genannt deployPath unsere eigene Aufgabe gesetzt:

grunt.initConfig({ 
    'ftp-deploy': { 
     toMyServer: { 
      auth: { 
       host: '10.7.88.87', 
       port: 21, 
       authKey: 'key1' 
      }, 
      src: 'deploy', 
      dest: '<%= grunt.option('deployPath') %>', 
      forceVerbose: true 
     } 
    } 
}); 

nächste eine benutzerdefinierte Aufgabe herstellt, die die grunt.option('deployPath') Parameter setzen. Die folgende Task setzt deployPath auf myApp, wenn Sie grunt deploy:prod ausführen. Wenn Sie nur grunt deploy ausführen, wird der Pfad auf myApp_rc festgelegt. Sobald der Pfad ausgewählt ist, ruft der Benutzer die ftp-deploy Aufgabe auf:

function deployTask(grunt) { 
    var deployPath = (this.args[0] === 'prod') ? 'myApp' : 'myApp_rc'; 
    grunt.option('deployPath', deployPath); 
    grunt.task.run('ftp-deploy'); 
} 

grunt.registerTask('deploy', deployTask);