0

phonegap アプリで grunt を使用しています。私の webapp を構築するとき、私は android、ios、および web モバイル プラットフォーム用に生成しています。したがって、タスクを宣言するたびに、通常、プラットフォームごとに 1 つずつ、合計 3 つのターゲットがあります。

起動時にいくつかの grunt タスク構成を変更したいと思います。そのため、タスクが実行されるたびに通知を受けたいのです。

たとえば、私はしばしばそのようなものを持っています:

sass: { // some task
    options: {
        // some options
    },
    android: {
        // android configuration
    },
    ios: {
        // ios configuration
    },
    web: {
        // web configuration
    }
}

grunt ファイルには、各ターゲットのステータス (アクティブ/非アクティブ) を宣言できるセクションがあり、1 つ、2 つ、または 3 つのターゲットのみをビルドできます。毎回すべてのものを構築したくありません。

したがって、たとえば grunt コマンドでビルドする場合、各ターゲットを手動で指定する必要はありません。アクティブなものを検出し、そのものだけをビルドしたい。grunt-contrib-watch のようなプラグインを使用し、タスクの実行を宣言する場合、各ターゲットを事前に宣言することはできません。今のところターゲットは3つですが、phonegapなので明日は7つになるかもしれません。

各実行前に通知を受け、実行の範囲を動的に変更するために使用できる API または文書化されていないイベントはありますか?

実際の不機嫌な状態のソリューションは1つしかありません:-タスク実行のラッパーとして機能する独自のプラグイン(たとえばn)を作成します:

grunt n:sass will generate grunt sass:ios sass:web if these two targets are actives

どんな助けでも感謝します。ありがとう。よろしくお願いします。

4

1 に答える 1

-1

最終的により良い解決策を見つけました。

タスク ラッパーを作成する代わりに、grunt.util.hooker API を使用して grunt.task.run メソッドをフックしました。これで、通話を傍受して自分の通話に置き換えることができます。

たとえば、私の場合:

grunt sass

傍受され、置き換えられます

grunt sass:web
于 2013-06-16T19:45:03.027 に答える