2017-04-08 14 views
0

以下のソース設定例は、srcディレクトリのファイルを処理します。同じタスクで処理してbuild2にputするsrc2ディレクトリもあります。設定に必要な変更点異なる引数を使ってタスクを実行する方法を教えてください

module.exports = function (grunt) { var saveLicense = require('uglify-save-license'); grunt.initConfig({ 
    clean : { 
     build : { 
     src : ['build'] 
     }, 
    }, 
    copy : { 
     files : { 
     cwd : 'src', 
     src : '**/*', 
     dest : 'build', 
     expand : true 
     } 
    }, ... 

答えて

0

両方grunt-contrib-copygrunt-contrib-cleanは、他の多くの面倒なプラグインのように、複数TargetsTaskに指定することを可能にします。

はあなたのシナリオでは、あなたは、単に( src2フォルダをコピーする srcフォルダと別のターゲットをコピーするには1ターゲット) copyタスク に二つのターゲットを設定することができます。

またcleanタスク(1ターゲットはbuild2フォルダをきれいにbuildフォルダと別のターゲットをきれいにする)に2つの目標を設定することができます。

Gruntfile.js

あなたGruntfile.js尻として、次のように構成することができます。

module.exports = function(grunt) { 

    var saveLicense = require('uglify-save-license'); 

    grunt.initConfig({ 

     // The 'clean' task now includes two targets. 
     // named 'build1' and 'build2' 
     clean: { 
      build1: { 
       src: ['build'] 
      }, 
      build2: { 
       src: ['build2'] 
      } 
     }, 

     // The 'copy' task now includes two targets. 
     // named 'src1' and 'src2' 
     copy: { 
      src1: { 
       cwd: 'src', 
       src: '**/*', 
       dest: 'build', 
       expand: true 
      }, 
      src2: { 
       cwd: 'src2', 
       src: '**/*', 
       dest: 'build2', 
       expand: true 
      } 
     } 

     // ... 

    }); 

    grunt.loadNpmTasks('grunt-contrib-copy'); 
    grunt.loadNpmTasks('grunt-contrib-clean'); 

    // Registering the Targets in the Tasks.... 

    grunt.registerTask('copySrc1', ['copy:src1']); 
    grunt.registerTask('cleanBuild1', ['clean:build1']); 

    grunt.registerTask('copySrc2', ['copy:src2']); 
    grunt.registerTask('cleanBuild2', ['clean:build2']); 

    grunt.registerTask('copyBoth', ['copy']); 
    grunt.registerTask('cleanBoth', ['clean']); 

}; 

は兵卒タスクを実行

あなたは6つのコールがあることに気づくでしょう

.registerTask(...)はスニペットの最後に機能します。すなわち、 copySrc1,cleanBuild1,copySrc2,cleanBuild2,copyBothおよびcleanBoth

彼らはあなたのコマンドラインを経由して次のコマンドを実行することができます:

$ grunt copySrc1

(これはbuildフォルダにsrcフォルダをコピーします)


$ grunt cleanBuild1

(これはbuildフォルダをきれいにします)


$ grunt copySrc1

(これはbuild2フォルダにsrc2フォルダをコピーします)


​​

(これはbuild2フォルダをきれいにします)


$ grunt copyBoth

(これはbuildフォルダにsrcフォルダをコピーしてbuild2フォルダにsrc2フォルダをコピーします)


$ grunt cleanBoth

(これは両方buildbuild2フォルダをきれいにします)


ノート

次のようにあなたはおそらく唯一の2つの.registerTask(...)の機能を維持する必要があり

grunt.registerTask('copyBoth', ['copy']); 
grunt.registerTask('cleanBoth', ['clean']); 

しかし、私は他のfo ur .registerTask(...)は、セミコロンの表記法(:)を使用してタスク内で単一のターゲットを呼び出す方法を示しています。たとえば:

grunt.registerTask('copySrc1', ['copy:src1']); 

上記のスニペットで['copy:src1']部分は単にcopyタスク内src1という名前だけターゲットを実行します。

一方:

grunt.registerTask('copyBoth', ['copy']); 

...がcopyタスク内の任意のターゲットを参照していない(すなわちセミコロン表記は使用されません)、すべてのターゲットが実行されます。

タスク、目標をさらに理解するには、このpostへの私の答えを読むことができます。

希望に役立ちます!

関連する問題