我有一个共享的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命令的参数,然后使用与该网站相关的正确文件夹运行干净和样式。
如何重构我的代码以实现这一目标?
谢谢
答案 0 :(得分:0)
我会用环境变量来完成这个而不是参数。
var buildDir = process.env.BUILD_DIR + '/Assets/build';
然后你会把它称为:
BUILD_DIR=websiteA gulp build