/** * Created by cephe on 2017/7/8. */ const gulp = require("gulp"); const gulpUtil = require("gulp-util"); const CacheBuster = require('gulp-cachebust'); cacheBust = new CacheBuster(); const sequence = require('gulp-sequence'); const clean = require('gulp-clean'); const webpack = require("webpack"); const WebpackDevServer = require("webpack-dev-server"); const webpackStream = require("webpack-stream"); const paths = require("./build_scripts/paths"); const upload = require('gulp-qndn').upload; const cdnizer = require("gulp-cdnizer"); gulp.task("run",["webpack:dev-server"],function(){ }); gulp.task("webpack:dev-server",function(){ let webpackConfig = require("./build_scripts/webpack.dev.config"); let compiler = webpack(webpackConfig); new WebpackDevServer(compiler).listen(8080, '0.0.0.0', function (err) { if (err) throw new gulpUtil.PluginError('webpack-dev-server', err); gulpUtil.log('[webpack-dev-server]', 'http://localhost:8080/'); }); }); gulp.task("build-package",[],function(){ return gulp.src(paths.devPath+paths.packagePath+"**/*.*") .pipe(gulp.dest(paths.buildPath+paths.packagePath)); }); gulp.task("build-img",[],function(){ return gulp.src(paths.devPath+paths.imagePath+"**/*.*") .pipe(gulp.dest(paths.buildPath+paths.imagePath)); }); gulp.task("build-font",[],function(){ return gulp.src(paths.devPath+paths.fontPath+"**/*.*") .pipe(gulp.dest(paths.buildPath+paths.fontPath)); }); gulp.task("build-js",[],function(){ let webpackConfig = require("./build_scripts/webpack.dist.config"); return gulp.src(paths.devPath+paths.sourcePath+"*.js") .pipe(webpackStream(webpackConfig,webpack)) .pipe(gulp.dest(paths.buildPath)); }); gulp.task("build-html",[],function(){ return gulp.src(paths.devPath+"*.html") .pipe(gulp.dest(paths.buildPath)); }); gulp.task("build-clean",[],function(){ return gulp.src(paths.buildPath,{read: false}) .pipe(clean()); }); gulp.task("build",sequence("build-clean","build-js","build-img","build-font","build-html","build-package")); gulp.task("release-package",[],function(){ return gulp.src(paths.buildPath+paths.packagePath+"**/*.*") .pipe(gulp.dest(paths.distPath+paths.packagePath)); }); gulp.task("release-font",[],function(){ return gulp.src(paths.buildPath+paths.fontPath+"**/*.*") .pipe(cacheBust.resources()) .pipe(gulp.dest(paths.distPath+paths.fontPath)); }); gulp.task("release-img",[],function(){ return gulp.src([paths.buildPath+paths.imagePath+"**/*.*",`!${paths.buildPath+paths.imagePath}dyn-img`]) .pipe(cacheBust.resources()) .pipe(gulp.dest(paths.distPath+paths.imagePath)); }); gulp.task("release-dynamic-img",[],function(){ return gulp.src([paths.buildPath+paths.imagePath+"dyn-img/**/*.*"]) .pipe(gulp.dest(paths.distPath+paths.imagePath+"dyn-img")); }); gulp.task("release-css",[],function(){ return gulp.src(paths.buildPath+paths.cssPath+"*.css") .pipe(cacheBust.references()) .pipe(cacheBust.resources()) .pipe(gulp.dest(paths.distPath+paths.cssPath)); }); gulp.task("release-js",[],function(){ return gulp.src(paths.buildPath+paths.javascriptPath+"*.js") .pipe(cacheBust.references()) .pipe(cacheBust.resources()) .pipe(gulp.dest(paths.distPath+paths.javascriptPath)) }); gulp.task("release-html",[],function(){ return gulp.src(paths.buildPath+"/*.html") .pipe(cacheBust.references()) .pipe(gulp.dest(paths.distPath)) }); gulp.task("release-clean",[],function(){ return gulp.src(paths.distPath,{read: false}) .pipe(clean()); }); gulp.task("release",sequence("release-clean","build",["release-img","release-dynamic-img","release-font"],"release-js","release-css","release-html","release-package")); //@Deprecated WARNING:this task will be removed gulp.task("build-dist",["release"],function(){ }); const qnOptions = { accessKey: 'uowHFB7KKRYXjThk7way8IxSQdAKwow8OSNGh3xo', secretKey: 'qLoFUT7jpgKQUqOPt2AIkdQZDpM9zNft23meQozm', bucket: 'blog-space', origin: 'blog-space.qiniudn.com', }; const cdnUrl = `//${qnOptions.origin}/`; gulp.task("release-package-qn",[],function(){ return gulp.src(paths.buildPath+paths.packagePath+"**/*.*") .pipe(upload({qn: qnOptions,prefix:paths.packagePath})); }); gulp.task("release-font-qn",[],function(){ return gulp.src(paths.buildPath+paths.fontPath+"**/*.*") .pipe(cacheBust.resources()) .pipe(upload({qn: qnOptions,prefix:paths.fontPath})); }); gulp.task("release-img-qn",[],function(){ return gulp.src([paths.buildPath+paths.imagePath+"**/*.*",`!${paths.buildPath+paths.imagePath}dyn-img/**/*`]) .pipe(cacheBust.resources()) .pipe(upload({qn: qnOptions,prefix:paths.imagePath})); }); gulp.task("release-dynamic-img",[],function(){ return gulp.src([paths.buildPath+paths.imagePath+"dyn-img/**/*.*"]) .pipe(upload({qn: qnOptions,prefix:paths.imagePath+"dyn-img/"})); }); gulp.task("release-css-qn",[],function(){ return gulp.src(paths.buildPath+paths.cssPath+"*.css") .pipe(cacheBust.resources()) .pipe(cacheBust.references()) .pipe(cdnizer({ defaultCDNBase: cdnUrl, relativeRoot: '', files: ['/asset/**/*'] })) .pipe(upload({qn: qnOptions,prefix:paths.cssPath})) }); gulp.task("release-js-qn",[],function(){ return gulp.src(paths.buildPath+paths.javascriptPath+"*.js") .pipe(cacheBust.references()) .pipe(cacheBust.resources()) .pipe(cdnizer({ defaultCDNBase: cdnUrl, relativeRoot:'', matchers: [ { pattern: /(["'])(\.\/asset\/img\/.+?)(['"])/gi, fallback: false } ], files: ['asset/**/*'] })) .pipe(upload({qn: qnOptions,prefix:paths.javascriptPath})); }); gulp.task("release-html-qn",[],function(){ return gulp.src(paths.buildPath+"/*.html") .pipe(cacheBust.references()) .pipe(cdnizer({ defaultCDNBase: cdnUrl, relativeRoot: '', files: ['asset/**/*'] })) .pipe(cdnizer({ defaultCDNBase: cdnUrl, relativeRoot: '', files: ['js/**/*'] })) .pipe(cdnizer({ defaultCDNBase: cdnUrl, relativeRoot: '', files: ['package/**/*'] })) .pipe(gulp.dest(paths.distPath)) }); gulp.task("release-qn",sequence("release-clean","build",["release-img-qn","release-font-qn"],"release-js-qn","release-css-qn","release-html-qn","release-package-qn"));