UNPKG

fdm

Version:

基于gulp的1688前端集成化工具

138 lines (116 loc) 3.51 kB
/** * dongming.jidm */ 'use strict'; 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)); });