fdm
Version:
基于gulp的1688前端集成化工具
138 lines (116 loc) • 3.51 kB
JavaScript
/**
* dongming.jidm
*/
;
var Path = require('path');
var gulp = require('gulp');
var helper = require('../utils/helper');
var styleversion = require('fd-gulp-styleversion');
var dependencies = require('fd-gulp-dependencies');
var jsConcat = require('fd-gulp-jsconcat');
var jsMin = require('fd-gulp-jsmin');
var less = require('fd-gulp-less');
var cssConcat = require('fd-gulp-cssconcat');
var cssMin = require('fd-gulp-cssmin');
var clean = require('gulp-clean');
var convertEncoding = require('fd-gulp-convert-encoding');
var args = helper.parseArgs(process.argv);
var src = args.options.source;
var dest = args.options.dest;
var appname = args.options.appname;
var lcd = args.options.localcommondir;
var timeStamp = helper.getStampOfNow();
var prettyTime = require('pretty-hrtime');
var start = process.hrtime();
var versionprefix = '';
var dependencyprefix = '';
var concatOpt = {};
if(appname === 'fdevlib' || appname === 'sys') {
versionprefix = '/' + appname;
dependencyprefix = appname;
} else {
versionprefix = '/app/' + appname;
dependencyprefix = 'app/' + appname;
}
var versionOpt = {
"timeStamp": timeStamp,
"prefix": versionprefix
};
if( lcd.trim().length ) {
concatOpt = {
"localCommonDir": lcd
};
}
var concatOpt = {
"localCommonDir": lcd
};
var sourceDir = [
dest + '/**'
];
var ignoreDir = [
'!' + dest + '/**/tmp{,/**}',
'!' + dest + '/**/test{,/**}',
'!' + dest + '/**/doc{,/**}',
'!' + dest + '/**/example{,/**}',
'!' + dest + '/**/examples{,/**}',
'!' + dest + '/**/dest{,/**}',
'!' + dest + '/**/*.zip'
];
gulp.task('clean', function() {
return gulp.src(dest, {read: false})
.pipe(clean({force: true}));
});
gulp.task('copy', ['clean'], function() {
return gulp.src(src + '/**')
.pipe(gulp.dest(dest));
});
gulp.task('convertEncoding', ['copy'], function() {
return gulp.src([dest + '/**/*.js'])
.pipe(convertEncoding('gbk'))
.pipe(gulp.dest(dest));
});
gulp.task('less', ['copy'], function() {
return gulp.src(dest + '/**/*.less')
.pipe(less())
.pipe(gulp.dest(dest));
});
gulp.task('cssconcat', ['less'], function() {
return gulp.src(dest + '/**/*.css')
.pipe(cssConcat(dest, concatOpt))
.pipe(gulp.dest(dest));
});
gulp.task('cssmin', ['cssconcat'], function() {
return gulp.src(dest + '/**/*.css')
.pipe(cssMin())
.pipe(gulp.dest(dest));
});
gulp.task('jsconcat', ['copy'], function() {
return gulp.src(dest + '/**/*.js')
.pipe(jsConcat(dest, concatOpt))
.pipe(gulp.dest(dest));
});
gulp.task('jsmin', ['jsconcat'], function() {
return gulp.src(dest + '/**/*.js')
.pipe(jsMin(dest))
.pipe(gulp.dest(dest));
});
gulp.task('dependencies', ['copy'], function() {
return gulp.src([dest + '/**/*.js'].concat(ignoreDir))
.pipe(dependencies(dest, dependencyprefix))
.pipe(gulp.dest(Path.join(dest,'version')));
});
gulp.task('csstask', ['cssconcat', 'cssmin'], function() {
console.log('css task done');
});
gulp.task('jstask', ['jsconcat', 'jsmin'], function() {
console.log('js task done');
});
gulp.task('version', ['csstask', 'jstask'], function() {
return gulp.src(sourceDir.concat(ignoreDir))
.pipe(styleversion(dest, versionOpt))
.pipe(gulp.dest(Path.join(dest,'version')));
});
gulp.task('pcbuild', ['csstask', 'jstask', 'dependencies', 'version'], function() {
var end = process.hrtime(start);
console.log(' build全部完成,共耗时:', prettyTime(end));
});