我正在尝试使用gulp将我的供应商文件复制到我的dev文件夹。当我处于开发模式时,我希望只复制未经文明的文件,如果未通知则不存在复制缩小的文件。在生产模式中,如果文件不存在,我希望复制minifed文件缩小普通文件。
我的文件夹结构
js
app.js
jquery
jquery.min.js
jquery.js
fontawesome
fontawesome.min.js
fontawesome.min.css
fonts.ttf...
这是我写的基本内容。
var scriptsPath = '../vendor/';
function getFolders(dir) {
return fs.readdirSync(dir)
.filter(function(file) {
return fs.statSync(path.join(dir, file)).isDirectory();
});
}
gulp.task('vendor', function() {
var folders = getFolders(scriptsPath);
var cssFilter = $.filter('**/*.css')
var tasks = folders.map(function(folder) {
var jsFilter;
if (isProduction) {
jsFilter = $.filter('**/*.min.js');
} else {
jsFilter = $.filter(['**/*.js', '!**/*.min.js']);
}
return gulp.src(path.join(scriptsPath, '**/'))
.pipe(jsFilter)
.pipe($.if(useSourceMaps, $.sourcemaps.init()))
.pipe($.if(isProduction, $.uglify({preserveComments: 'some'})))
.on('error', handleError)
.pipe(jsFilter.restore())
.pipe(cssFilter)
.pipe($.if( isProduction, $.minifyCss() ))
.on('error', handleError)
.pipe(cssFilter.restore())
.on('error', handleError)
.pipe(gulp.dest(build.vendor.js));
});
return es.concat.apply(null, tasks);
});
我正在尝试最后两天使用gulp-if&一些方法。但还没有得到解决方案。谢谢。
答案 0 :(得分:1)
您正试图将更多内容纳入vendor
任务中。使用JS文件执行的操作与使用CSS文件执行的操作完全无关。这很难读。
尝试将gulp-filter
拆分为vendor
,vendor-js
等较小的任务,而不是使用vendor-css
,然后将它们声明为{{1}的依赖项任务:
vendor
您的gulp.task('vendor', ['vendor-js', 'vendor-css' /* etc ... */]);
任务可能如下所示:
vendor-js
从现在开始,根据您的具体需求进行调整应该是相当简单的。