如何根据终端上的参数运行具有不同参数的gulp任务

时间:2017-06-08 00:54:30

标签: gulp

我有一个共享的SCSS源文件,必须编译并复制到不同的项目文件夹中。

我有一个构建任务,它调用2个任务,清理和样式(编译/缩小并复制到构建文件夹)。

我的源SCSS文件在所有网站之间共享,但目标文件夹不同。

我希望能够运行:构建websiteA然后清理websiteA中的build文件夹并从共享文件夹中编译文件并复制到网站A中的build文件夹。

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:我对websiteB(build-websiteB,clean-websiteB和style-websiteB)也有相同的任务。 所以我最终得到了重复的代码,我知道必须有更好的方法。

我想要的是提供网站名称作为gulp命令的参数,然后使用与该网站相关的正确文件夹运行干净和样式。

如何重构我的代码以实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:0)

我会用环境变量来完成这个而不是参数。

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

然后你会把它称为:

BUILD_DIR=websiteA gulp build
相关问题