4

たとえば、。という名前の独自のタスクを定義しますjasmine。タスクに基づいていますserver

私が電話すればgrunt server jasmine-それは大丈夫です。しかし、私は自分のタスク内でその依存関係を宣言したいと思います。

grunt.task.run-タスクをキューに追加します(私のタスクの後)。 grunt.task.requires-依存関係を確認するだけで、実行はしません...

serverタスクの前にタスクを実行する方法はありjasmineますか?

jasmine_origPSタスクを作成したくないので.registerTask('jasmine', 'server jasmine_orig')。それはばかげているように見えます。

4

2 に答える 2

1

サーバータスクが現在書かれている方法ですが、これは不可能です。ただし、 grunt-connectプラグインを使用するか、独自の grunt serverタスクを実行することで、必要な処理を実行できる場合があります。組み込みのもののソースはここにあります:

https://github.com/gruntjs/grunt/blob/0.3-stable/tasks/server.js

--debugご覧のとおり、構成を読み取ったり、接続サーバーを起動したり、渡されたときにログに記録したりする以外に、それほど多くのことはありません。実際、そのコードをすべてヘルパーにコピーして(ひどく文書化されていないので、恐れ入ります)、ジャスミンタスクから呼び出すことができます。

テスト用に(テストの独立性のために)別のサーバーを起動することはおそらく良い考えですが、何らかの理由でリソースを節約する必要がある場合、または他の方法で複数のサーバーが不快であると感じた場合は、カスタムを作成する必要がありますサーバーが存在するかどうかを確認し、存在しない場合はサーバーを起動するタスクコード。

おそらく最良の解決策は次のとおりです。

  1. grunt-contrib-connectnpmパッケージをインストールします。

    npm install grunt-contrib-connect --save-dev
    
  2. 開発環境とテスト環境の構成を作成します。

    connect: {
      dev: {
        base: 'path/to/serve',
        port: 8000
      },
      test: {
        base: 'path/to/serve',
        port: 8001
      }
    }
    
  3. test実行するタスクを登録grunt server:test jasmineします。

    grunt.registerTask('test', 'server:test jasmine')
    
于 2013-01-29T16:41:15.137 に答える
0

部分的な解決策の1つは、特定のタスクのステップを変数として定義することです。次に、次のようにそれらを連結できます。

var buildSteps = [ ... ];
var distDevSteps = [ ... ];
grunt.registerTask('build', buildSteps);
grunt.registerTask('dist_dev', [].concat(buildSteps, distDevSteps));
于 2015-04-05T20:43:24.993 に答える