0

私のサイトには切り替え可能なテーマと色があり、可能なすべてのテーマと色の組み合わせを CSS ファイルとしてレンダリングするには、Elixir/Gulp が必要です。これが私のものgulpfile.jsです:

var gulp = require('gulp'),
    notify = require('gulp-notify'),
    elixir = require('laravel-elixir'),
    stylus = require('laravel-elixir-stylus'),
    watch = require('gulp-watch');

var themes = [
    "alpha",
    "beta"
];

var colors = [
    "blue",
    "red",
    "green"
];

if(elixir.config.babel)
    elixir.config.babel.enabled = false;

elixir(function(mix) {
    for(ti = 0; ti < themes.length; ++ti) {
        for(ci = 0; ci < colors.length; ++ci) {
            mix.stylus([
                'colors/'+colors[ci]+'.styl',
                'themes/'+themes[ti]+'/main.styl'
            ], "public/css/"+themes[ti]+"."+colors[ci]+".css");
        }
    }
});

私には、これが実行されるように見えます。ループをテストしたところ、すべてのテーマと色の組み合わせがうまくいくことがわかりました。

ただし、実行すると、フォルダーが作成さbeta.green.cssれ、その中に2つのファイルmain.stylgreen.styl.

  1. 最後のコマンドだけでなく、すべての Stylus コマンドを生成するにはどうすればよいですか?
  2. フォルダー内の 2 つの個別のファイルではなく、結果を 1 つのファイルに結合するにはどうすればよいですか?
4

2 に答える 2

2

最終的には、Elixir を完全に捨てて、純粋な Gulp でそれを行うことになりました。

gulp.task('styles', function(cb){
    async.each(themes, function(theme, done) {
        async.each(colors, function(color, next) {
            gulp
                .src([
                    './resources/assets/stylus/colors/'+color+'.styl',
                    './resources/assets/stylus/themes/'+theme+'/main.styl'
                ])
                .pipe(stylus())
                .pipe(concat(theme+"."+color+'.css'))
                .pipe(gulp.dest('./public/css'))
                .on("end", next);
        }, done);
    }, cb);
});
于 2015-07-17T12:47:26.223 に答える
0
  1. たぶんlaravel-elixir-stylus、複数回呼び出されるべきではありませんか?(または、これはバグかもしれません...実装の最後を見ると、タスクが名前stylusでキューに入れられていることがわかります。おそらく互いに上書きされています) – したがって、最後にキューに入れられたもの ( beta+ green) のみが実行されます。
  2. の 2 番目の引数は出力ディレクトリです。個別の出力フォルダーが必要ない場合は、代わりにmix.stylus渡します。"public/css/""public/css/"+themes[ti]+"."+colors[ci]+".css"

"私には、これが実行されるように見えます。ループをテストしましたが、すべてのテーマと色の組み合わせを問題なく通過することがわかっています。 " – への呼び出しの外側でループをテストした場合はelixirconsole.logタスクを実行するとトリガーされますか?

于 2015-07-13T05:02:40.370 に答える