4

プロジェクトの 1 つで GruntJS を使い始めています。簡単なエイリアスを使用して、簡単なビルド スクリプトを簡単に作成できました。

ただし、私のスクリプトには基本的に同じ多くのタスクが含まれています。唯一の違いは、ソース フォルダーと宛先フォルダーなどのいくつかのパラメーターです。

例えば:

    sass: {
        options:{
            trace: true,
            debugInfo: true,
            style: 'compressed'
        },
        html: {
            files: {
                'build/html/css/main.css': 'sass/html.sass'
            }
        },
        html2: {
            files: {
                'build/html2/css/main.css': 'sass/html2.sass'
            }
        },
        html3: {
            files: {
                'build/html3/css/main.css': 'sass/html3.sass'
            }
        }
    }

私が達成したいのは、タスクを 1 つだけにして、そのタスクにパラメーター (dest,src) を渡すことです。

MultiTasks を使用してこれを実装しようとしました:

grunt.registerTask('sass2', 'Run all Sass compilation tasks.', function() {
    var projects = ['html','html2','html3'];

    projects.forEach(function(proj){
        grunt.config.set('sass.files.dest', 'build/' + proj + '/css/main.css');
        grunt.config.set('sass.files.src', 'sass/' + proj + '.sass');
        grunt.log.writeln(grunt.config.get('sass.files.dest'));
        grunt.log.writeln(grunt.config.get('sass.files.src'));
        grunt.task.run('sass');

    });
});

Grunt ログはパラメーターの正しい値を出力しますが、コンパイルされるのは html3 sass のみです。

プロジェクトの 1 つだけがコンパイルされる理由と、これを修正する方法がわかりません。

おそらく、この問題を解決する別の方法があります。より良い方法。たぶんテンプレートを使用していますか?

どんな種類の助けやヒントもいただければ幸いです。

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

4

1 に答える 1