2017-06-08 14 views
0

共有SCSSソースファイルをコンパイルし、異なるプロジェクトフォルダにコピーする必要があります。ターミナルの引数に応じて異なるパラメータを持つgulpタスクを実行する方法

私は2つのタスク、クリーンとスタイル(ビルドフォルダにコンパイル/ミニ化とコピー)を呼び出すビルドタスクを持っています。

ソースSCSSファイルはすべてのWebサイトで共有されますが、コピー先フォルダは異なります。

私が実行できるようにしたいと思います:ウェブサイトA.内部websiteA内部websiteA、その後、クリーンビルドフォルダを作成し、共有フォルダからファイルをコンパイルし、フォルダを構築するためにコピーされた

var assetsDir = '_Assets'; 

var buildStyleWebsiteA = 'WebsiteA/Assets/build'; 
var buildStyleWebsiteB = 'WebsiteB/Assets/build'; 


gulp.task('clean-websiteA', function (cb) { 
    return del([buildStyleWebsiteA ], cb); 
}); 

gulp.task('styles-websiteA', ['clean-websiteA'], function() { 
    return gulp.src(assetsDir + '/**/*.scss') 
     .pipe(sourcemaps.init()) 
     .pipe(sass().on('error', sass.logError)) 
     .pipe(autoprefixer()) 
     .pipe(gulp.dest(buildStyleWebsiteA + '/css')) 
     .pipe(concat('styles.css')) 
     .pipe(cleanCss()) 
     .pipe(sourcemaps.write()) 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(gulp.dest(buildStyleWebsiteA + '/min/')) 
     .pipe(liveReload()); 
}); 

gulp.task('build-websiteA', ['styles']); 

PS:私も持っていますウェブサイトB(ビルドウェブサイトB、クリーンウェブサイトB、スタイルウェブサイトB)と同じタスク。 私は繰り返しコードで終わってしまい、より良い方法が必要であることを知っています。

私が望むのは、gulpコマンドのパラメータとしてウェブサイト名を指定してから、そのウェブサイトに関連する正しいフォルダを使用してクリーンでスタイルを実行することです。

これを達成するために私のコードをどのようにリファクタリングすることができますか?

おかげ

答えて

0

私はむしろ引数よりも、これを達成するために、環境変数を使用します。

BUILD_DIR=websiteA gulp build 
+0

「BUILD_DIR」は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されません:として

var buildDir = process.env.BUILD_DIR + '/Assets/build'; 

その後、あなたはそれを呼ぶだろう。それは "グルーフビルドBUILD_DIR = websiteA"ではありませんか? –

関連する問題