From 56ab369699900fce52660a9d8842278ef5781d79 Mon Sep 17 00:00:00 2001 From: Antoine <2ec0b4@users.noreply.github.com> Date: Thu, 16 Jun 2016 14:04:48 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20des=20t=C3=A2ches=20Gulp=20?= =?UTF-8?q?(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Test en cours d'un nouveau package Gulp * Change de librairie pour la gestion des templates HBS * Renomme le nom du channel (pour ne pas qu'il soit modifié lors du Gulp build) * Renomme les régions (pour ne pas qu'elles soient modifiées lors du Gulp build) * Simplifie le Gulp build (WIP) * Ne versionne pas les fichiers de type mp3 * Supprime un paramètre inutile --- gulpfile.js | 100 ++++++++++--------------------- js/app/app.js | 2 +- js/app/controllers/soundboard.js | 2 +- js/app/main.js | 4 +- js/app/views/filter.js | 2 +- js/app/views/sound.js | 2 +- js/app/views/soundboard.js | 10 ++-- package.json | 3 +- 8 files changed, 44 insertions(+), 81 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index b4509c5..fa5a280 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,15 +4,20 @@ var gulp = require('gulp'), del = require('del'), syncy = require('syncy'), runSequence = require('run-sequence'), - rev = require('gulp-rev'), + RevAll = require('gulp-rev-all'), revReplace = require('gulp-rev-replace'); -gulp.task("scripts-rev", function(){ - return gulp.src(['js/app/**/*.js']) - .pipe(rev()) - .pipe(gulp.dest('dist/js/app')) - .pipe(rev.manifest()) - .pipe(gulp.dest('dist/js/app')); +gulp.task("rev-all", function(){ + var revAll = new RevAll({ + dontGlobal: [/^\/favicon.ico$/g, /^\/sounds\/(.+)\.mp3/g], + dontRenameFile: [/^\/index\.html/g, /^\/robots\.txt/g, /^\/img\/ks\.jpg/g] + }); + + return gulp.src(['dist/**']) + .pipe(revAll.revision()) + .pipe(gulp.dest('dist')) + .pipe(revAll.manifestFile()) + .pipe(gulp.dest('dist')); }); gulp.task("scripts-min", function(){ @@ -23,90 +28,45 @@ gulp.task("scripts-min", function(){ .pipe(gulp.dest('dist/js/app')); }); -gulp.task("styles-rev", function(){ - return gulp.src(['css/**/*.css']) - .pipe(rev()) - .pipe(gulp.dest('dist/css')) - .pipe(rev.manifest()) - .pipe(gulp.dest('dist/css')); -}); - gulp.task("styles-min", function(){ return gulp.src(['dist/css/**/*.css']) .pipe(cssnano()) .pipe(gulp.dest('dist/css')); }); -gulp.task("config-rev", function(){ - return gulp.src(['sounds/sounds.json']) - .pipe(rev()) - .pipe(gulp.dest('dist/sounds')) - .pipe(rev.manifest()) - .pipe(gulp.dest('dist/sounds')); -}); - gulp.task("scripts-rev-replace", function(){ - var manifest = gulp.src('dist/js/app/rev-manifest.json'); + var manifest = gulp.src('dist/rev-manifest.json'), + replaceStr = function(str) { + str = str.replace(/[\/]?js\/app\//g, ""); + if( str.match(/\.js$/) || str.match(/\.hbs$/) ) { + return '"'+( str.match(/\.hbs$/) ? 'hbs!' : '' )+str.slice(0, str.lastIndexOf('.'))+'"'; + } + return str; + }; return gulp.src(['dist/js/app/**/*.js']) .pipe(revReplace({ manifest: manifest, - modifyUnreved: function(str) { - return '"'+str.slice(0, str.lastIndexOf('.'))+'"'; - }, - modifyReved: function(str) { - return '"'+str.slice(0, str.lastIndexOf('.'))+'"'; - } - })) - .pipe(gulp.dest('dist/js/app')); -}); - -gulp.task("index-rev-replace", function(){ - var manifest = gulp.src('dist/js/app/rev-manifest.json'); - - return gulp.src(['dist/index.html']) - .pipe(revReplace({ - manifest: manifest, - modifyUnreved: function(str) { - return '"/js/app/'+str.slice(0, str.lastIndexOf('.'))+'"'; - }, - modifyReved: function(str) { - return '"/js/app/'+str.slice(0, str.lastIndexOf('.'))+'"'; - } - })) - .pipe(gulp.dest('dist')); -}); - -gulp.task("styles-rev-replace", function(){ - var manifest = gulp.src('dist/css/rev-manifest.json'); - - return gulp.src(['dist/index.html']) - .pipe(revReplace({ - manifest: manifest - })) - .pipe(gulp.dest('dist')); -}); - -gulp.task("config-rev-replace", function(){ - var manifest = gulp.src('dist/sounds/rev-manifest.json'); - - return gulp.src(['dist/js/app/**/*.js']) - .pipe(revReplace({ - manifest: manifest + modifyUnreved: replaceStr, + modifyReved: replaceStr })) .pipe(gulp.dest('dist/js/app')); }); gulp.task('clean', function() { - return del(['dist/js', 'dist/css', 'dist/index.html', 'dist/sounds/sounds*.json', '!dist/empty']); + return del(['dist']); }); gulp.task('sync', function() { - syncy(['.htaccess', './favicons/**', './img/**', './js/app/templates/**', 'index.html', './node_modules/**', 'robots.txt', './sounds/**', '!./sounds/sounds.json'], 'dist', { + syncy(['.htaccess', './css/**', './favicons/**', './img/**', './js/**', 'index.html', 'robots.txt', './sounds/**'], 'dist', { updateAndDelete: true, }).on('error', console.error).end(); }); -gulp.task("build", function(){ - return runSequence('clean', 'sync', 'scripts-rev', 'styles-rev', 'config-rev', 'scripts-rev-replace', 'styles-rev-replace', 'config-rev-replace', 'index-rev-replace', 'scripts-min', 'styles-min'); +gulp.task("init", function(){ + return runSequence('clean', 'sync'); +}); + +gulp.task("build", function(){ + return runSequence('rev-all', 'scripts-rev-replace', 'scripts-min', 'styles-min'); }); diff --git a/js/app/app.js b/js/app/app.js index 009fd36..35a5543 100644 --- a/js/app/app.js +++ b/js/app/app.js @@ -15,7 +15,7 @@ define("app", function(require) { mainRegion: "#main" }); - Radio.channel("app").reply("region:show", this.showRegion.bind(this)); + Radio.channel("App").reply("region:show", this.showRegion.bind(this)); this.router = new Marionette.AppRouter(); diff --git a/js/app/controllers/soundboard.js b/js/app/controllers/soundboard.js index fbe33cd..89bee71 100644 --- a/js/app/controllers/soundboard.js +++ b/js/app/controllers/soundboard.js @@ -14,7 +14,7 @@ define("controllers/soundboard", function(require) { index: function() { var view = new SoundboardView(); - Radio.channel("app").request("region:show", { view: view }); + Radio.channel("App").request("region:show", { view: view }); } }); diff --git a/js/app/main.js b/js/app/main.js index 31585a0..6a52159 100644 --- a/js/app/main.js +++ b/js/app/main.js @@ -5,7 +5,7 @@ require.config({ "backbone.radio": "../../node_modules/backbone.radio/build/backbone.radio", css: "../../node_modules/require-css/css", handlebars: "../../node_modules/handlebars/dist/handlebars.min", - hbs: "../../node_modules/requirejs-handlebars/hb", + hbs: "../../node_modules/require-handlebars-plugin/hbs", jquery: "../../node_modules/jquery/dist/jquery.min", likely: "../../node_modules/ilyabirman-likely/release/likely", marionette: "../../node_modules/backbone.marionette/lib/backbone.marionette.min", @@ -18,7 +18,9 @@ require.config({ exports: "Backbone" }, hbs: { + deps: ["handlebars", "underscore"], templateExtension: "hbs", + "hbs/handlebars": "handlebars", "hbs/underscore": "underscore" }, marionette: { diff --git a/js/app/views/filter.js b/js/app/views/filter.js index 16d3ab8..e4c01dc 100644 --- a/js/app/views/filter.js +++ b/js/app/views/filter.js @@ -3,7 +3,7 @@ define("views/filter", function(require) { var Marionette = require("marionette"), Radio = require("backbone.radio"), - SoundsFilterTemplate = require("hbs!templates/filter.hbs"), + SoundsFilterTemplate = require("hbs!templates/filter"), SoundsFilterView; SoundsFilterView = Marionette.LayoutView.extend({ diff --git a/js/app/views/sound.js b/js/app/views/sound.js index 1898de0..9f722da 100644 --- a/js/app/views/sound.js +++ b/js/app/views/sound.js @@ -3,7 +3,7 @@ define("views/sound", function(require) { var Marionette = require("marionette"), SoundModel = require("models/sound"), - SoundTemplate = require("hbs!templates/sound.hbs"), + SoundTemplate = require("hbs!templates/sound"), SoundView; SoundView = Marionette.ItemView.extend({ diff --git a/js/app/views/soundboard.js b/js/app/views/soundboard.js index efbc480..7977cd7 100644 --- a/js/app/views/soundboard.js +++ b/js/app/views/soundboard.js @@ -4,18 +4,18 @@ define("views/soundboard", function(require) { var Marionette = require("marionette"), SoundsFilterView = require("views/filter"), SoundsView = require("views/sounds"), - SoundboardTemplate = require("hbs!templates/soundboard.hbs"), + SoundboardTemplate = require("hbs!templates/soundboard"), SoundboardView; SoundboardView = Marionette.LayoutView.extend({ template: SoundboardTemplate, regions: { - filter: "#filter", - list: "#list" + regFilter: "#filter", + regList: "#list" }, onShow: function() { - this.showChildView("filter", new SoundsFilterView()); - this.showChildView("list", new SoundsView()); + this.showChildView("regFilter", new SoundsFilterView()); + this.showChildView("regList", new SoundsView()); } }); diff --git a/package.json b/package.json index 221d540..ea7097a 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "jquery": "^2.2.4", "ilyabirman-likely": "^2.1.0", "require-css": "^0.1.8", + "require-handlebars-plugin": "^1.0.0", "requirejs": "^2.2.0", - "requirejs-handlebars": "^0.1.1", "requirejs-text": "^2.0.12", "underscore": "^1.8.3" }, @@ -37,6 +37,7 @@ "gulp": "^3.9.1", "gulp-cssnano": "^2.1.2", "gulp-rev": "^7.0.0", + "gulp-rev-all": "^0.8.24", "gulp-rev-replace": "^0.4.3", "gulp-uglify": "^1.5.3", "run-sequence": "^1.2.1",