Gruntタスクでコマンドを実行する方法


まず、Gruntの設定ファイル(通常はGruntfile.js)内で、grunt-execパッケージをインストールし、タスクを定義します。

// Gruntfile.js
module.exports = function(grunt) {
  grunt.loadNpmTasks('grunt-exec');
  grunt.initConfig({
    exec: {
      myCommand: 'echo Hello, Grunt!'
    }
  });
  grunt.registerTask('myTask', ['exec:myCommand']);
};

上記の例では、grunt-execパッケージを使用して、echo Hello, Grunt!コマンドを実行するタスクを定義しています。このタスクはmyTaskという名前で登録されています。

次に、ターミナルで以下のコマンドを実行してGruntタスクを実行します。

grunt myTask

これにより、指定したコマンドが実行されます。もちろん、myCommandに実行したい任意のコマンドを設定することができます。

さらに、Gruntのタスク内で実行されるコマンドが非同期である場合、コールバック関数を使用する必要があります。以下に例を示します。

// Gruntfile.js
module.exports = function(grunt) {
  grunt.loadNpmTasks('grunt-exec');
  grunt.initConfig({
    exec: {
      myAsyncCommand: 'npm install'
    }
  });
  grunt.registerTask('myTask', function() {
    var done = this.async();
    grunt.util.spawn({
      cmd: 'npm',
      args: ['install'],
      opts: { stdio: 'inherit' }
    }, function(error, result, code) {
      if (error) {
        grunt.log.error('Command failed.');
      } else {
        grunt.log.writeln('Command executed successfully.');
      }
      done();
    });
  });
};

上記の例では、非同期のコマンドであるnpm installを実行するタスクを定義しています。grunt.util.spawnメソッドを使用してコマンドを実行し、コールバック関数内で結果を処理しています。

これらの方法を使用することで、Gruntタスク内でコマンドを実行することができます。必要に応じて、さまざまなコマンドやオプションを使用してタスクをカスタマイズすることができます。