You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

113 lines
3.4 KiB

let fs = require('fs'),
gulp = require('gulp'),
concat = require('gulp-concat'),
cleanCSS = require('gulp-clean-css'),
sass = require('gulp-sass'),
minify = require('gulp-minify'),
size = require('gulp-size'),
cached = require('gulp-cached'),
fileInclude = require('gulp-file-include'),
sourcemaps = require('gulp-sourcemaps'),
spritesmith = require('gulp.spritesmith');
let packageFile = JSON.parse(fs.readFileSync('source.info.json'));
let source = packageFile.source;
let destPath = packageFile.destPath;
let watchPath = packageFile.watch;
function reloadSourceData()
{
packageFile = JSON.parse(fs.readFileSync('source.info.json'));
source = packageFile.source;
destPath = packageFile.destPath;
watchPath = packageFile.watch;
}
/**********************************************************************************************************
* TASKS
***********************************************************************************************************/
gulp.task('html', function(){
reloadSourceData();
let dest = destPath.root + "/";
return gulp.src(source.html)
.pipe(fileInclude({
prefix : '@@',
context : {
ROOT : '.'
}
}))
.pipe(cached('include'))
.pipe(size({ gzip:true, showFiles:true }))
.pipe(gulp.dest(dest));
});
gulp.task('scss:compile', function () {
reloadSourceData();
let dest = destPath.root + "/" + destPath.assets + "/" + destPath.css;
let fileName = "style.min.css";
return gulp.src( source.css )
.pipe(sourcemaps.init())
.pipe( sass({outputStyle: 'compact'}).on('error', sass.logError))
.pipe( concat(fileName)) //병합하고
.pipe(cleanCSS().on('error', function(e){console.log(e);}))
.pipe(size({ gzip: true, showFiles: true }))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dest));
});
gulp.task('js:combine', function(){
reloadSourceData();
let dest = destPath.root + "/" + destPath.assets + "/" + destPath.js;
let fileName = "common.js";
return gulp.src( source.js )
.pipe(sourcemaps.init())
.pipe(concat(fileName))
.pipe(minify({ext: {min : '.min.js'},noSource:true}))
.pipe(size({ gzip: true, showFiles: true }))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dest));
});
gulp.task('sprite', function () {
reloadSourceData();
var spriteData = null;
let dest = destPath.root + "/" + destPath.assets + "/icons";
var packages = fs.readdirSync(source.icons);
for(var i in packages) {
spriteData = gulp.src('src/icons/'+packages[i]+'/*.png').pipe(spritesmith({
imgName: packages[i] + '.png',
cssName: packages[i] +'.css',
padding:2,
cssTemplate: 'src/icons/iconsTemplates.scss.handlebars',
cssHandlebarsHelpers : {'packageName' : packages[i]},
imgPath : '../icons/' + packages[i] + '.png',
algorithm:'left-right',
algorithmOpts:false
}));
spriteData.img.pipe(gulp.dest(dest));
spriteData.css.pipe(gulp.dest("src/icons/"));
}
return true;
});
gulp.task('watch', function(){
gulp.watch(watchPath.html, gulp.series(['html']));
gulp.watch(watchPath.js, gulp.series(['js:combine']));
gulp.watch(watchPath.css, gulp.series(['scss:compile']));
});
gulp.task('default', gulp.series(['html', 'js:combine', 'scss:compile']));