From db55d36de58a66d596be5014f44c99a17c71c697 Mon Sep 17 00:00:00 2001 From: Lars Laade Date: Thu, 1 May 2014 19:00:53 +0200 Subject: [PATCH] ALL: Add plugin UMD wrapper, Closes #977 --- Gruntfile.js | 115 +++++++++++++++++++++---- README.md | 10 ++- demo/index.html | 2 + demo/requirejs/app.js | 9 ++ demo/requirejs/index.html | 56 ++++++++++++ lib/require.js | 36 ++++++++ package.json | 4 +- src/additional/accept.js | 6 +- src/additional/additional.js | 12 +-- src/additional/alphanumeric.js | 2 +- src/additional/bankaccountNL.js | 2 +- src/additional/bankorgiroaccountNL.js | 2 +- src/additional/bic.js | 2 +- src/additional/cifES.js | 2 +- src/additional/creditcardtypes.js | 2 +- src/additional/currency.js | 2 +- src/additional/dateITA.js | 10 +-- src/additional/dateNL.js | 2 +- src/additional/extension.js | 4 +- src/additional/giroaccountNL.js | 2 +- src/additional/iban.js | 2 +- src/additional/integer.js | 2 +- src/additional/ipv4.js | 2 +- src/additional/ipv6.js | 2 +- src/additional/lettersonly.js | 2 +- src/additional/letterswithbasicpunc.js | 2 +- src/additional/mobileNL.js | 2 +- src/additional/mobileUK.js | 2 +- src/additional/nieES.js | 2 +- src/additional/nifES.js | 2 +- src/additional/nowhitespace.js | 2 +- src/additional/pattern.js | 8 +- src/additional/phoneNL.js | 2 +- src/additional/phoneUK.js | 2 +- src/additional/phoneUS.js | 2 +- src/additional/phonesUK.js | 2 +- src/additional/postalcodeIT.js | 4 +- src/additional/postalcodeNL.js | 2 +- src/additional/postcodeUK.js | 2 +- src/additional/require_from_group.js | 4 +- src/additional/skip_or_fill_minimum.js | 4 +- src/additional/strippedminlength.js | 6 +- src/additional/time.js | 2 +- src/additional/time12h.js | 2 +- src/additional/url2.js | 4 +- src/additional/vinUS.js | 4 +- src/additional/zipcodeUS.js | 2 +- src/additional/ziprange.js | 2 +- src/ajax.js | 57 ++++++------ src/core.js | 6 +- src/delegate.js | 23 +++-- src/localization/messages_ar.js | 40 ++++----- src/localization/messages_bg.js | 40 ++++----- src/localization/messages_ca.js | 40 ++++----- src/localization/messages_cs.js | 40 ++++----- src/localization/messages_da.js | 34 ++++---- src/localization/messages_de.js | 34 ++++---- src/localization/messages_el.js | 40 ++++----- src/localization/messages_es.js | 46 +++++----- src/localization/messages_es_AR.js | 46 +++++----- src/localization/messages_et.js | 36 ++++---- src/localization/messages_eu.js | 40 ++++----- src/localization/messages_fa.js | 46 +++++----- src/localization/messages_fi.js | 36 ++++---- src/localization/messages_fr.js | 92 ++++++++++---------- src/localization/messages_he.js | 40 ++++----- src/localization/messages_hr.js | 40 ++++----- src/localization/messages_hu.js | 38 ++++---- src/localization/messages_id.js | 38 ++++---- src/localization/messages_is.js | 36 ++++---- src/localization/messages_it.js | 46 +++++----- src/localization/messages_ja.js | 40 ++++----- src/localization/messages_ka.js | 40 ++++----- src/localization/messages_kk.js | 40 ++++----- src/localization/messages_ko.js | 40 ++++----- src/localization/messages_lt.js | 40 ++++----- src/localization/messages_lv.js | 40 ++++----- src/localization/messages_my.js | 40 ++++----- src/localization/messages_nl.js | 58 ++++++------- src/localization/messages_no.js | 40 ++++----- src/localization/messages_pl.js | 40 ++++----- src/localization/messages_pt_BR.js | 46 +++++----- src/localization/messages_pt_PT.js | 46 +++++----- src/localization/messages_ro.js | 40 ++++----- src/localization/messages_ru.js | 40 ++++----- src/localization/messages_si.js | 40 ++++----- src/localization/messages_sk.js | 34 ++++---- src/localization/messages_sl.js | 40 ++++----- src/localization/messages_sr.js | 40 ++++----- src/localization/messages_sr_lat.js | 40 ++++----- src/localization/messages_sv.js | 36 ++++---- src/localization/messages_th.js | 40 ++++----- src/localization/messages_tj.js | 40 ++++----- src/localization/messages_tr.js | 40 ++++----- src/localization/messages_uk.js | 40 ++++----- src/localization/messages_vi.js | 40 ++++----- src/localization/messages_zh.js | 40 ++++----- src/localization/messages_zh_TW.js | 40 ++++----- src/localization/methods_de.js | 2 +- src/localization/methods_es_CL.js | 2 +- src/localization/methods_nl.js | 2 +- src/localization/methods_pt.js | 2 +- 102 files changed, 1246 insertions(+), 1154 deletions(-) create mode 100644 demo/requirejs/app.js create mode 100644 demo/requirejs/index.html create mode 100644 lib/require.js diff --git a/Gruntfile.js b/Gruntfile.js index 14252c2..1f9ba54 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -3,23 +3,64 @@ module.exports = function(grunt) { "use strict"; +var banner, + umdStart, + umdMiddle, + umdEnd, + umdStandardDefine, + umdAdditionalDefine, + umdLocalizationDefine; + +banner = "/*!\n" + + " * jQuery Validation Plugin v<%= pkg.version %>\n" + + " *\n" + + " * <%= pkg.homepage %>\n" + + " *\n" + + " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" + + " * Released under the <%= _.pluck(pkg.licenses, 'type').join(', ') %> license\n" + + " */\n"; + +// define UMD wrapper variables + +umdStart = "(function( factory ) {\n" + + "\tif ( typeof define === \"function\" && define.amd ) {\n"; + +umdMiddle = "\t} else {\n" + + "\t\tfactory( jQuery );\n" + + "\t}\n" + + "}(function( $ ) {\n\n"; + +umdEnd = "\n}));"; + +umdStandardDefine = "\t\tdefine( [\"jquery\"], factory );\n"; +umdAdditionalDefine = "\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n"; +umdLocalizationDefine = "\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n"; + grunt.initConfig({ pkg: grunt.file.readJSON("package.json"), concat: { - options: { - banner: "/*!\n" + - " * jQuery Validation Plugin v<%= pkg.version %>\n" + - " *\n" + - " * <%= pkg.homepage %>\n" + - " *\n" + - " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" + - " * Released under the <%= _.pluck(pkg.licenses, 'type').join(', ') %> license\n" + - " */\n" - }, // used to copy to dist folder dist: { + options: { + banner: banner + + umdStart + + umdStandardDefine + + umdMiddle, + footer: umdEnd + }, + files: { + "dist/jquery.validate.js": ["src/core.js", "src/*.js"] + } + }, + extra: { + options: { + banner: banner + + umdStart + + umdAdditionalDefine + + umdMiddle, + footer: umdEnd + }, files: { - "dist/jquery.validate.js": ["src/core.js", "src/*.js"], "dist/additional-methods.js": ["src/additional/additional.js", "src/additional/*.js"] } } @@ -33,11 +74,20 @@ grunt.initConfig({ " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" + " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n" }, - all: { + dist: { files: { - "dist/jquery.validate.min.js": ["dist/jquery.validate.js"], - "dist/additional-methods.min.js": ["dist/additional-methods.js"] + "dist/additional-methods.min.js": ["dist/additional-methods.js"], + "dist/jquery.validate.min.js": ["dist/jquery.validate.js"] } + }, + all: { + files: [{ + expand: true, + cwd: "dist/localization", + src: "**/*.js", + dest: "dist/localization", + ext: ".min.js" + }] } }, compress: { @@ -49,14 +99,14 @@ grunt.initConfig({ pretty: true }, src: [ - "dist/*.js", + "dist/**/*.js", "README.md", "changelog.txt", "Gruntfile.js", "package.json", "demo/**/*.*", "lib/**/*.*", - "src/localization/**/*.*", + "src/**/*.*", "test/**/*.*" ] } @@ -107,6 +157,33 @@ grunt.initConfig({ }, src: "src/**/*.*" } + }, + copy: { + dist: { + options: { + // append UMD wrapper + process: function ( content ) { + return umdStart + umdLocalizationDefine + umdMiddle + content + umdEnd; + } + }, + files: [{ + src: ["src/localization/*"], + dest: "dist/localization", + expand: true, + flatten: true, + filter: "isFile" + }] + } + }, + replace: { + dist: { + src: ["dist/**/*.min.js"], + overwrite: true, + replacements: [{ + from: "./jquery.validate", + to: "./jquery.validate.min" + }] + } } }); @@ -117,9 +194,11 @@ grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-compress"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-jscs-checker"); +grunt.loadNpmTasks("grunt-contrib-copy"); +grunt.loadNpmTasks("grunt-text-replace"); -grunt.registerTask("default", ["concat", "jscs", "jshint", "qunit"]); -grunt.registerTask("release", ["default", "uglify", "compress"]); +grunt.registerTask("default", ["concat", "copy", "jscs", "jshint", "qunit"]); +grunt.registerTask("release", ["default", "uglify", "replace", "compress"]); grunt.registerTask("start", ["concat", "watch"]); }; diff --git a/README.md b/README.md index 02be0d4..4e71318 100644 --- a/README.md +++ b/README.md @@ -38,12 +38,20 @@ Include jQuery and the plugin on a page. Then select a form to validate and call - + ``` +Alternatively include jQuery and the plugin via requirejs in your module. + +```js +define(["jquery", "jquery.validate"], function( $ ) { + $("form").validate(); +}); +``` + For more information on how to setup a rules and customizations, [check the documentation](http://jqueryvalidation.org/documentation/). ## Reporting an Issue diff --git a/demo/index.html b/demo/index.html index 06dc7f3..104b9a8 100644 --- a/demo/index.html +++ b/demo/index.html @@ -217,6 +217,8 @@
  • Displaying Errors within Field Labels
  • +
  • Loading via RequireJS +
  • Real-world examples