0

グランツセットアップを微調整する際にいくつか問題があります。私たちの現在のプロジェクト設定はこうです。テーマフォルダにテーマフォルダがあります。テーマフォルダには、テーマごとに独自のSCSSファイルやその他のテーマに関連するテーマがあります。グラントでさまざまなコンパスタスクに複数のウォッチタスクを組み合わせる方法

当社のイサキファイルは約15のテーマ(最終的にうなり声が働いているため、デフォルトの兵卒のセットアップとJSHintを除外)で、このような設定である:

compass: { 
    options: { 
     ... 
    } 
    theme1: { 
     src: ['App/Themes/theme1/scss/**/*.scss'], 
     tasks: ['compass'], 
     options: { 
      sassDir: 'App/Themes/theme1/scss', 
      cssDir: 'App/Themes/theme1' 
     } 
    }, 
    theme2: { 
     src: ['App/Themes/theme2/scss/**/*.scss'], 
     tasks: ['compass'], 
     options: { 
      sassDir: 'App/Themes/theme2/scss', 
      cssDir: 'App/Themes/theme2' 
     } 
    }, 

    ... 
} 

concurrent: { 
    watch: { 
     tasks: ['compass:theme1', 'compass:theme2', ..., 'compass:themeXX'], 
     options: { 
      logConcurrentOutput: true, 
      spawn: false 
     } 
    } 
} 

grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-contrib-compass'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 

grunt.registerTask('default', ['concurrent']); 

実際の問題は、我々は、デフォルトの起動時にということですタスクx watchスレッドも開始されます。彼らはしなければならない小さな腕時計の仕事のために多くのオーバーヘッドを持っています。

私が探している解決策は、特定のテーマコンパスをトリガできる単一の監視タスクをセットアップする方法です。それを行う方法はありますか?それとも、現在の設定が唯一の方法ですか? xのタスクを見るよりも他の選択肢はありませんか?

ありがとうございました。

答えて

1

まず、ファイルを監視してタスクを実行しない設定オブジェクト内の監視タスクを足場にします。グロブパターンを使用して、テーマディレクトリ内のすべてのファイル.scssをスパイするためにウォッチャに伝える:

grunt.initConfig({ 
    compress: {}, //your existing compress object goes here 
    watch: { 
    themes: { 
     files: ['App/Themes/**/*.scss'], 
     tasks: [] 
    }, 
    }, 
}); 

次に、あなたはあなたのgruntfileにgrunt.eventリスナーを追加するつもりです。リスナーイベントは、ファイルが変更されたことを公開します(例:App/Themes/theme1/scss/foobar.scss)。これで、実行する圧縮ターゲット(theme1)を特定できるようになりました。

grunt.event.on('watch', function(action, filepath, target) { 
    if (target === 'themes') { 
    var theme = filepath.split("/"); 
    grunt.task.run('compress.' + theme[2]); //tells grunt to run "compress.theme1" based on this example 
    } 
}); 
+0

私が探していたものとまったく同じです。私はまだいくつかのことを磨く必要がありますが、良い出発点です。ありがとう。 –

+0

btw、これらの圧縮ターゲットの類似性によっては、テンプレート文字列を介してパラメータを渡す単一のターゲットにリファクタリングすることができます – theaccordance

+0

唯一の違いはフォルダの名前 –

関連する問題