From 212a0712597a820b55d6358c3da444ca15598d0e Mon Sep 17 00:00:00 2001 From: Matthieu Lux Date: Sun, 15 Feb 2015 10:28:30 +0100 Subject: [PATCH] replace misc task by a new other task --- app/files.json | 1 - app/src/mock-prompts.js | 3 --- app/src/preprocessors.js | 22 +++++++++++++++++ app/templates/gulp/_build.js | 35 +++++++++++++++------------ app/templates/src/assets/fonts/README | 1 - test/node/test-mock-prompts.js | 17 ------------- test/node/test-preprocessors.js | 17 +++++++++++++ test/template/mock-model.js | 1 + 8 files changed, 60 insertions(+), 37 deletions(-) delete mode 100644 app/templates/src/assets/fonts/README delete mode 100644 test/node/test-mock-prompts.js diff --git a/app/files.json b/app/files.json index ac1a2015..f0eb34c6 100644 --- a/app/files.json +++ b/app/files.json @@ -10,7 +10,6 @@ "src/favicon.ico", "src/404.html", "src/assets/images/yeoman.png", - "src/assets/fonts/README", "karma.conf.js", "protractor.conf.js", "e2e/main.spec.js" diff --git a/app/src/mock-prompts.js b/app/src/mock-prompts.js index e32880a7..667a1f95 100644 --- a/app/src/mock-prompts.js +++ b/app/src/mock-prompts.js @@ -100,8 +100,5 @@ module.exports = { cssPreprocessor: model.cssPreprocessor.values['node-sass'], jsPreprocessor: model.jsPreprocessor.values.none, htmlPreprocessor: model.htmlPreprocessor.values.none - }, - libRegexp: function(name, version) { - return new RegExp('"' + name + '": "' + version + '"'); } }; diff --git a/app/src/preprocessors.js b/app/src/preprocessors.js index 7df1135d..3d6f47f1 100644 --- a/app/src/preprocessors.js +++ b/app/src/preprocessors.js @@ -10,6 +10,28 @@ function rejectWithRegexp(regexp) { module.exports = function(GulpAngularGenerator) { + /** + * List files extension processed by the generator + */ + GulpAngularGenerator.prototype.computeProcessedFileExtension = function computeProcessedFileExtension() { + this.processedFileExtension = [ + 'html', + 'css', + 'js', + this.props.cssPreprocessor.extension, + this.props.jsPreprocessor.extension, + this.props.htmlPreprocessor.extension + ]; + if (this.imageMin) { + this.processedFileExtension = this.processedFileExtension.concat(['jpg', 'png', 'gif', 'svg']); + } + this.processedFileExtension = _.chain(this.processedFileExtension) + .uniq() + .filter(_.isString) + .value() + .join(','); + }; + /** * Compute gulp inject task dependencies depending on js and css preprocessors */ diff --git a/app/templates/gulp/_build.js b/app/templates/gulp/_build.js index f68d31c1..b2a38b7d 100644 --- a/app/templates/gulp/_build.js +++ b/app/templates/gulp/_build.js @@ -71,41 +71,46 @@ module.exports = function(options) { .pipe(gulp.dest(options.dist + '/')) .pipe($.size({ title: options.dist + '/', showFiles: true })); }); - +<% if (imageMin) { %> gulp.task('images', function () { return gulp.src(options.src + '/assets/images/**/*') -<% if (imageMin) { %> .pipe($.imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })) -<% } %> .pipe(gulp.dest(options.dist + '/assets/images/')); }); +<% } %> + // Only applies for fonts from bower dependencies + // Custom fonts are handled by the "other" task gulp.task('fonts', function () { - var customFonts = gulp.src(options.src + '/assets/fonts/**/*') - .pipe(gulp.dest(options.dist + '/assets/fonts/')); - - var bowerFonts = gulp.src($.mainBowerFiles()) + return gulp.src($.mainBowerFiles()) .pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}')) .pipe($.flatten()) .pipe(gulp.dest(options.dist + '/fonts/')); - - return merge(customFonts, bowerFonts); }); - gulp.task('misc', function () { - return gulp.src(options.src + '/**/*.ico') + gulp.task('other', function () { + return gulp.src([ + options.src + '/**/*', + '!' + options.src + '/**/*.{<%= processedFileExtension %>}' + ]) .pipe(gulp.dest(options.dist + '/')); }); - gulp.task('clean' -<% if (props.jsPreprocessor.key === 'typescript') { %>, ['tsd:purge'] -<% } %>, function (done) { +<% if (props.jsPreprocessor.key === 'typescript') { %> + gulp.task('clean', ['tsd:purge'], function (done) { +<% } else { %> + gulp.task('clean', function (done) { +<% } %> $.del([options.dist + '/', options.tmp + '/'], done); }); - gulp.task('build', ['html', 'images', 'fonts', 'misc']); +<% if (imageMin) { %> + gulp.task('build', ['html', 'images', 'fonts', 'other']); +<% } else { %> + gulp.task('build', ['html', 'fonts', 'other']); +<% } %> }; diff --git a/app/templates/src/assets/fonts/README b/app/templates/src/assets/fonts/README deleted file mode 100644 index 3a7cd07d..00000000 --- a/app/templates/src/assets/fonts/README +++ /dev/null @@ -1 +0,0 @@ -Place your custom fonts in this directory. diff --git a/test/node/test-mock-prompts.js b/test/node/test-mock-prompts.js deleted file mode 100644 index 6b6b7dc7..00000000 --- a/test/node/test-mock-prompts.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; -/* jshint expr:true */ - -require('chai').should(); - -var mockPrompts = require('../../app/src/mock-prompts'); - -describe('gulp-angular generator mock prompts', function () { - - describe('libRegexp', function () { - it('should return the right regexp', function () { - var regexp = mockPrompts.libRegexp('name', 'version'); - regexp.test('test\ncontent\n\s\s\s\s"name": "version"\ntest\ncontent\n').should.be.true; - }); - }); - -}); diff --git a/test/node/test-preprocessors.js b/test/node/test-preprocessors.js index d229c149..9d288657 100644 --- a/test/node/test-preprocessors.js +++ b/test/node/test-preprocessors.js @@ -29,6 +29,23 @@ describe('gulp-angular generator preprocessors script', function () { ]; }); + describe('compute file extension processed by the generator', function() { + it('should clean up the list and join with ,', function() { + generator.props = { + cssPreprocessor: { extension: null }, + jsPreprocessor: { extension: 'js' }, + htmlPreprocessor: { extension: 'jade' } + }; + generator.imageMin = true; + generator.computeProcessedFileExtension(); + generator.processedFileExtension.should.be.equal('html,css,js,jade,jpg,png,gif,svg'); + + generator.imageMin = false; + generator.computeProcessedFileExtension(); + generator.processedFileExtension.should.be.equal('html,css,js,jade'); + }); + }); + describe('compute dependencies for the gulp inject task', function() { it('should be empty if no preprocessors', function() { generator.props = { diff --git a/test/template/mock-model.js b/test/template/mock-model.js index 0884564b..60ae9e1a 100644 --- a/test/template/mock-model.js +++ b/test/template/mock-model.js @@ -25,6 +25,7 @@ module.exports = function() { isVendorStylesPreprocessed: false, injectTaskDeps: null, wiredepExclusions: [], + processedFileExtension: null, includeModernizr: false, imageMin: false, qrCode: false