diff options
Diffstat (limited to 'templates/html5/app/gulpfile.js')
-rw-r--r-- | templates/html5/app/gulpfile.js | 438 |
1 files changed, 0 insertions, 438 deletions
diff --git a/templates/html5/app/gulpfile.js b/templates/html5/app/gulpfile.js deleted file mode 100644 index da2826d..0000000 --- a/templates/html5/app/gulpfile.js +++ /dev/null @@ -1,438 +0,0 @@ -// BUG Symlink not working - -var gulp = require('gulp'); -var debug = require('gulp-debug'); -var plugins = require('gulp-load-plugins')(); -var del = require('del'); -var es = require('event-stream'); -var bowerFiles = require('main-bower-files'); -var print = require('gulp-print'); -var Q = require('q'); -var imagemin = require('gulp-imagemin'), pngquant = require('imagemin-pngquant'); -var taskListing = require('gulp-task-listing'); -var symlink = require('gulp-sym'); -var rename = require("gulp-rename"); -var exec = require('child_process').exec - -// addon for Foundation6 -var router = require('front-router'); - -// == PATH STRINGS ======== -var appdir = "./"; // Warning to not forget trailling '/' -config=require (appdir + "etc/_Config"); // upload user local preferences if any - -var frontend= appdir + config.FRONTEND; - -var paths = { - application : frontend, - scripts : frontend+'/**/*.js', - appStyles : [frontend+'/**/*.scss', '!'+frontend+'/styles/*/*-conf.scss'], - globalStyles: [frontend+'/styles/**/*.scss'], - images : [frontend+'/**/*.png',frontend+'/**/*.jpg',frontend+'/**/*.jpeg',frontend+'/**/*.svg',frontend+'/**/*.ttf'], - index : frontend+'/index.html', - partials : [frontend + '/**/*.html', '!' + frontend +'/index.html'], - distDev : './dist.dev', - distProd : './dist.prod', - sass: [frontend+'/styles', 'bower_components/foundation-apps/scss','bower_components/foundation-icon-fonts'], - fonts: ['bower_components/**/*.woff'], - favicon: frontend+'/favicon.ico', - wgtconfig: 'config.xml' -}; - -paths['distAppDev'] = paths.distDev + config.URLBASE; -paths['distAppProd'] = paths.distProd + config.URLBASE; - -// Run node in debug mode in developpement mode ? -var nodeopts = config.DEBUG !== undefined ? '--debug='+config.DEBUG : ''; - -// == PIPE SEGMENTS ======== -var pipes = {}; - -pipes.orderedVendorScripts = function() { - return plugins.order(['jquery.js', 'angular.js']); -}; - -pipes.orderedAppScripts = function() { - return plugins.angularFilesort(); -}; - -pipes.minifiedFileName = function() { - return plugins.rename(function (path) { - path.extname = '.min' + path.extname; - }); -}; - -pipes.validatedAppScripts = function() { - return gulp.src(paths.scripts) - .pipe(plugins.replace('@@APPNAME@@', config.APPNAME)) - .pipe(plugins.jshint()) - .pipe(plugins.jshint.reporter('jshint-stylish')); -}; - -pipes.builtAppScriptsDev = function() { - return pipes.validatedAppScripts() - .pipe(gulp.dest(paths.distAppDev)); -}; - -pipes.builtAppScriptsProd = function() { - var scriptedPartials = pipes.scriptedPartials(); - var validatedAppScripts = pipes.validatedAppScripts(); - return es.merge(scriptedPartials, validatedAppScripts) - .pipe(plugins.ngAnnotate()) - .pipe(pipes.orderedAppScripts()) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.concat(config.APPNAME+'.min.js')) - .pipe(plugins.uglify({compress: {drop_console: true}})) - .pipe(plugins.sourcemaps.write()) - .pipe(gulp.dest(paths.distAppProd)); -}; - -pipes.builtVendorScriptsDev = function() { - return gulp.src(bowerFiles()) - .pipe(gulp.dest( paths.distDev +'/bower_components')); -}; - -pipes.builtVendorScriptsProd = function() { - return gulp.src(bowerFiles('**/*.js')) - .pipe(pipes.orderedVendorScripts()) - .pipe(plugins.concat('vendor.min.js')) - .pipe(plugins.uglify()) - .pipe(gulp.dest(paths.distProd+ '/bower_components')); -}; - - -pipes.validatedPartials = function() { - return gulp.src(paths.partials) - .pipe(plugins.htmlhint({'doctype-first': false})) - .pipe(router({path: paths.application+'/etc/routes.js', root: paths.application})) - .pipe(plugins.htmlhint.reporter()); -}; - -pipes.builtPartialsDev = function() { - return pipes.validatedPartials() - .pipe(gulp.dest(paths.distAppDev)); -}; - -pipes.scriptedPartials = function() { - return pipes.validatedPartials() - .pipe(plugins.htmlhint.failReporter()) - .pipe(plugins.htmlmin({collapseWhitespace: true, removeComments: true})) - .pipe(plugins.ngHtml2js({ - moduleName: config.APPNAME, - template: "(function() {" - + "angular.module('<%= moduleName %>').run(['$templateCache', function($templateCache) {" - + "$templateCache.put('<%= template.url %>',\n '<%= template.escapedContent %>');" - + "}]);\n" - + "})();\n" - })); -}; - -pipes.builtAppStylesDev = function() { - return gulp.src(paths.appStyles) - .pipe(plugins.sass({includePaths: paths.sass})) - .pipe(gulp.dest(paths.distAppDev + '/styles')); -}; - -pipes.builtglobalStylesDev = function() { - return gulp.src(paths.globalStyles) - .pipe(plugins.sass({includePaths: paths.sass})) - .pipe(gulp.dest(paths.distDev + '/global_styles')); -}; - -pipes.builtAppStylesProd = function() { - return gulp.src(paths.appStyles) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.sass({includePaths: frontend + '/styles'})) - // .pipe(debug({title: '***** appStyle:'})) - .pipe(plugins.cleanCss()) - .pipe(plugins.concat(config.APPNAME+'.css')) - .pipe(plugins.sourcemaps.write()) - .pipe(pipes.minifiedFileName()) - .pipe(gulp.dest(paths.distAppProd)); -}; - -pipes.builtglobalStylesProd = function() { - return gulp.src(paths.globalStyles) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.sass({includePaths: paths.sass})) - .pipe(plugins.cleanCss()) - .pipe(plugins.sourcemaps.write()) - .pipe(pipes.minifiedFileName()) - .pipe(rename(function (path) {path.dirname="";return path;})) - .pipe(gulp.dest(paths.distProd + '/global_styles')); -}; - -pipes.processedFontsDev = function() { - return gulp.src(paths.fonts) - .pipe(rename(function (path) {path.dirname="";return path;})) - .pipe(gulp.dest(paths.distDev+'/bower_components')); -}; - -pipes.processedFontsProd = function() { - return gulp.src(paths.fonts) - .pipe(rename(function (path) {path.dirname="";return path;})) - .pipe(gulp.dest(paths.distProd+'/bower_components')); -}; - - -pipes.processedImagesDev = function() { - return gulp.src(paths.images) - .pipe(gulp.dest(paths.distAppDev)); -}; - -pipes.processedFaviconDev = function() { - return gulp.src(paths.favicon) - .pipe(gulp.dest(paths.distDev)); -}; - -pipes.processedImagesProd = function() { - return gulp.src(paths.images) - .pipe(imagemin({ - progressive: true, - svgoPlugins: [{removeViewBox: false}], - use: [pngquant()] - })) - .pipe(gulp.dest(paths.distAppProd)); -}; - -pipes.processedFaviconProd = function() { - return gulp.src(paths.favicon) - .pipe(gulp.dest(paths.distProd)); -}; - -// Create an Symlink when config.URLBASE exist -pipes.createDevSymLink = function() { - return gulp.src(paths.distDev).pipe(symlink(paths.distDev+config.URLBASE, {force: true})); -}; - -pipes.createProdSymLink = function() { - return gulp.src(paths.distProd).pipe(symlink(paths.distDev+config.URLBASE,{force: true})); -}; - -pipes.validatedIndex = function() { - return gulp.src(paths.index) - .pipe(plugins.replace('@@APPNAME@@', config.APPNAME)) - .pipe(plugins.replace('@@URLBASE@@', config.URLBASE)) - .pipe(plugins.htmlhint()) - .pipe(plugins.htmlhint.reporter()); -}; - -pipes.builtIndexDev = function() { - - var orderedVendorScripts = pipes.builtVendorScriptsDev() - .pipe(pipes.orderedVendorScripts()); - - var orderedAppScripts = pipes.builtAppScriptsDev() - .pipe(pipes.orderedAppScripts()); - - var appStyles = pipes.builtAppStylesDev(); - var globalStyles = pipes.builtglobalStylesDev(); - - return pipes.validatedIndex() - // Vendor and Global should have absolute path to rootdir application one are relative to BaseURL - .pipe(plugins.inject(orderedVendorScripts, {relative: false, ignorePath: "/dist.dev", name: 'bower'})) - .pipe(plugins.inject(globalStyles, {relative: false, ignorePath: "/dist.dev", name:'vendor'})) - .pipe(gulp.dest(paths.distAppDev)) // write first to get relative path for inject - .pipe(plugins.inject(orderedAppScripts, {relative: true})) - .pipe(plugins.inject(appStyles, {relative: true, name: 'appli'})) - .pipe(gulp.dest(paths.distAppDev)); -}; - -pipes.builtIndexProd = function() { - - var vendorScripts= pipes.builtVendorScriptsProd(); - var appScripts = pipes.builtAppScriptsProd(); - var appStyles = pipes.builtAppStylesProd(); - var globalStyles = pipes.builtglobalStylesProd(); - - return pipes.validatedIndex() - // Vendor and Global should have absolute path to rootdir application one are relative to BaseURL - .pipe(plugins.inject(vendorScripts, {relative: false, ignorePath: "/dist.prod", name: 'bower'})) - .pipe(plugins.inject(globalStyles, {relative: false, ignorePath: "/dist.prod", name:'vendor'})) - .pipe(gulp.dest(paths.distAppProd)) // write first to get relative path for inject - .pipe(plugins.inject(appScripts, {relative: true})) - .pipe(plugins.inject(appStyles, {relative: true, name:'appli'})) - .pipe(plugins.htmlmin({collapseWhitespace: true, removeComments: true})) - .pipe(gulp.dest(paths.distAppProd)); -}; - -pipes.builtAppDev = function() { - return es.merge(pipes.builtIndexDev(), pipes.builtPartialsDev(), pipes.processedFaviconDev(), pipes.processedImagesDev(), pipes.processedFontsDev() ); -}; - -pipes.builtAppProd = function() { - return es.merge(pipes.builtIndexProd(), pipes.processedFaviconProd(), pipes.processedImagesProd(), pipes.processedFontsProd()); -}; - -pipes.widgetConfig = function(type) { - var dst=paths["dist"+type]; - var content="."+config.URLBASE+"/index.html"; - content=content.replace(/\/+/g,"/"); - return gulp.src(paths.wgtconfig+".in") - .pipe(plugins.replace('@@APPNAME@@', config.APPNAME)) - .pipe(plugins.replace('@@CONTENT@@', content)) - .pipe(plugins.rename("config.xml")) - .pipe(gulp.dest(dst)) -}; - -pipes.widgetPack = function(type,cb) { - var dst=paths["dist"+type]; - var wgtfile=config.APPNAME+"_"+type+".wgt" - - exec( - "wgtpkg-pack -f -o "+wgtfile+" "+dst, - function(err,stdout,stderr) { - console.log(stdout); - console.log(stderr); - cb(err); - }); -}; - -// == TASKS ======== - -// Add a task to render the output -gulp.task('help', taskListing.withFilters(/-/)); - -// clean, build of production environement -gulp.task('build', ['clean-build-app-prod']); - -// removes all compiled dev files -gulp.task('clean-dev', function() { - var deferred = Q.defer(); - del(paths.distDev, function() { - deferred.resolve(); - }); - return deferred.promise; -}); - -// removes all compiled production files -gulp.task('clean-prod', function() { - var deferred = Q.defer(); - del(paths.distProd, function() { - deferred.resolve(); - }); - return deferred.promise; -}); - -// checks html source files for syntax errors -gulp.task('validate-partials', pipes.validatedPartials); - -// checks index.html for syntax errors -gulp.task('validate-index', pipes.validatedIndex); - -// moves html source files into the dev environment -gulp.task('build-partials-dev', pipes.builtPartialsDev); - -// converts partials to javascript using html2js -gulp.task('convert-partials-to-js', pipes.scriptedPartials); - -// runs jshint on the app scripts -gulp.task('validate-app-scripts', pipes.validatedAppScripts); - -// moves app scripts into the dev environment -gulp.task('build-app-scripts-dev', pipes.builtAppScriptsDev); - -// concatenates, uglifies, and moves app scripts and partials into the prod environment -gulp.task('build-app-scripts-prod', pipes.builtAppScriptsProd); - -// compiles app sass and moves to the dev environment -gulp.task('build-app-styles-dev', pipes.builtAppStylesDev); - -// compiles and minifies app sass to css and moves to the prod environment -gulp.task('build-app-styles-prod', pipes.builtAppStylesProd); - -// moves vendor scripts into the dev environment -gulp.task('build-vendor-scripts-dev', pipes.builtVendorScriptsDev); - -// concatenates, uglifies, and moves vendor scripts into the prod environment -gulp.task('build-vendor-scripts-prod', pipes.builtVendorScriptsProd); - -// validates and injects sources into index.html and moves it to the dev environment -gulp.task('build-index-dev', pipes.builtIndexDev); - -// validates and injects sources into index.html, minifies and moves it to the dev environment -gulp.task('build-index-prod', pipes.builtIndexProd); - -// builds a complete dev environment -gulp.task('build-app-dev', pipes.builtAppDev); - -// builds a complete prod environment -gulp.task('build-app-prod', pipes.builtAppProd); - -// cleans and builds a complete dev environment -gulp.task('clean-build-app-dev', ['clean-dev'], pipes.builtAppDev); - -// cleans and builds a complete prod environment -gulp.task('clean-build-app-prod', ['clean-prod'], pipes.builtAppProd); - -// clean, build, and watch live changes to the dev environment -gulp.task('watch-dev', ['clean-build-app-dev'], function() { - - // watch app scripts - gulp.watch(paths.scripts, function() { - return pipes.builtAppScriptsDev() - .pipe(plugins.livereload()); - }); - - // watch html partials - gulp.watch(paths.partials, function() { - return pipes.builtPartialsDev() - .pipe(plugins.livereload()); - }); - - // watch Images - gulp.watch(paths.images, function() { - return pipes.processedImagesDev() - .pipe(plugins.livereload()); - }); - - // watch styles - gulp.watch(paths.appStyles, function() { - return pipes.builtAppStylesDev() - .pipe(plugins.livereload()); - }); - -}); - -// clean, build, and watch live changes to the prod environment -gulp.task('watch-prod', ['clean-build-app-prod'], function() { - - // watch index - gulp.watch(paths.index, function() { - return pipes.builtIndexProd() - .pipe(plugins.livereload()); - }); - - // watch app scripts - gulp.watch(paths.scripts, function() { - return pipes.builtAppScriptsProd() - .pipe(plugins.livereload()); - }); - - // watch hhtml partials - gulp.watch(paths.partials, function() { - return pipes.builtAppScriptsProd() - .pipe(plugins.livereload()); - }); - - // watch Images - gulp.watch(paths.images, function() { - return pipes.processedImagesProd() - .pipe(plugins.livereload()); - }); - - // watch styles - gulp.watch(paths.appStyles, function() { - return pipes.builtAppStylesProd() - .pipe(plugins.livereload()); - }); - -}); - -gulp.task('widget-config-dev', ['build-app-dev'], function() { return pipes.widgetConfig("Dev"); }); -gulp.task('widget-config-prod', ['build-app-prod'], function() { return pipes.widgetConfig("Prod"); }); -gulp.task('widget-dev', ['widget-config-dev'], function(cb) { return pipes.widgetPack("Dev",cb); }); -gulp.task('widget-prod', ['widget-config-prod'], function(cb) { return pipes.widgetPack("Prod",cb); }); - -// default task builds for prod -gulp.task('default', ['widget-prod']); |