From e1ec18124c7d7a588e17adee044bf674702833c2 Mon Sep 17 00:00:00 2001 From: Bartek Ciszkowski Date: Tue, 28 Jan 2014 22:40:32 -0500 Subject: [PATCH 1/5] Add support for CommonJS, AMD, and global namespace usage methods. --- backbone-nested.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/backbone-nested.js b/backbone-nested.js index 8f6261a..1da9fd9 100644 --- a/backbone-nested.js +++ b/backbone-nested.js @@ -7,7 +7,18 @@ * MIT Licensed (LICENSE) */ /*global $, _, Backbone */ -(function(){ +(function(root, factory){ + if (typeof exports !== 'undefined') { + // Define as CommonJS export: + module.exports = factory(require("jquery"), require("underscore"), require("backbone")); + } else if (typeof define === 'function' && define.amd) { + // Define as AMD: + define(["jquery", "underscore", "backbone"], factory); + } else { + // Just run it: + factory(root.$, root._, root.Backbone); + } +}(this, function($, _, Backbone) { 'use strict'; var _delayedTriggers = [], @@ -359,4 +370,5 @@ }); -}()); + return Backbone; +})); From 1fbebb2890765e62fe2168b6478058195957282f Mon Sep 17 00:00:00 2001 From: Bartek Ciszkowski Date: Tue, 28 Jan 2014 23:02:24 -0500 Subject: [PATCH 2/5] Add jquery, underscore to package.json dependencies This way, require('backbone') just works as expected. --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 86668b6..e322a5a 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,8 @@ "test": "grunt" }, "dependencies": { + "jquery": ">=1.8.3", + "underscore": ">=1.5.0", "backbone": ">=0.9.2" }, "devDependencies": { From 73dd48986dbb264de6b029ede250489063c1b254 Mon Sep 17 00:00:00 2001 From: Bartek Ciszkowski Date: Tue, 28 Jan 2014 23:25:16 -0500 Subject: [PATCH 3/5] Resolve jshint warnings. --- backbone-nested.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backbone-nested.js b/backbone-nested.js index 1da9fd9..5052396 100644 --- a/backbone-nested.js +++ b/backbone-nested.js @@ -6,7 +6,7 @@ * Copyright (c) 2011-2012 Aidan Feldman * MIT Licensed (LICENSE) */ -/*global $, _, Backbone */ +/*global define, require, module */ (function(root, factory){ if (typeof exports !== 'undefined') { // Define as CommonJS export: From f3dd12e8da71b1161a0de7dc3d01f920bd3abce8 Mon Sep 17 00:00:00 2001 From: Bartek Ciszkowski Date: Wed, 29 Jan 2014 09:51:00 -0500 Subject: [PATCH 4/5] Add test to ensure NestedModel is attached to Backbone when using require() Introduces tape and a new grunt task, because mixing in this type of test with qunit seemed to be a pain. This separates the two environments while keeping consistent with a method to run tests. --- Gruntfile.js | 6 +++++- package.json | 4 +++- test/tape-require.js | 8 ++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/tape-require.js diff --git a/Gruntfile.js b/Gruntfile.js index da36a12..d6676dc 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,6 +24,9 @@ module.exports = function(grunt) { qunit: { index: ['test/index.html'] }, + tape: { + files: ['test/tape-*.js'] + }, watch: { files: ['', 'test/**'], tasks: ['jshint', 'qunit'] @@ -32,7 +35,8 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-qunit'); + grunt.loadNpmTasks('grunt-tape'); // Default task. - grunt.registerTask('default', ['jshint', 'qunit']); + grunt.registerTask('default', ['jshint', 'qunit', 'tape']); }; diff --git a/package.json b/package.json index e322a5a..2490270 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,10 @@ "grunt": "~0.4.1", "grunt-contrib-qunit": "~0.2.2", "grunt-contrib-jshint": "~0.6.4", + "grunt-tape": "0.0.2", "grunt-contrib-watch": "~0.5.3", - "jslitmus": "~0.1.0" + "jslitmus": "~0.1.0", + "tape": "~2.3.2" }, "peerDependencies": { "grunt-cli": "*", diff --git a/test/tape-require.js b/test/tape-require.js new file mode 100644 index 0000000..2a61f45 --- /dev/null +++ b/test/tape-require.js @@ -0,0 +1,8 @@ +var test = require('tape'); +var Backbone = require('backbone'); +require('../backbone-nested'); + +test('require backbone-nested should attach to Backbone', function(t) { + t.ok(Backbone.NestedModel); + t.end(); +}); From 27634eecca1b2bcb4cfe4f1b12fca889c14d139b Mon Sep 17 00:00:00 2001 From: Bartek Ciszkowski Date: Thu, 30 Jan 2014 09:26:10 -0500 Subject: [PATCH 5/5] Use grunt-mocha-test instead of grunt-tape due to node 0.8 compatibilites Ends up coming from the writable stream here: https://github.com/substack/tap-parser/pull/9#issuecomment-33683041 --- Gruntfile.js | 10 ++++++---- package.json | 4 ++-- test/mocha-require.js | 11 +++++++++++ test/tape-require.js | 8 -------- 4 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 test/mocha-require.js delete mode 100644 test/tape-require.js diff --git a/Gruntfile.js b/Gruntfile.js index d6676dc..5a07ada 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,8 +24,10 @@ module.exports = function(grunt) { qunit: { index: ['test/index.html'] }, - tape: { - files: ['test/tape-*.js'] + mochaTest: { + test: { + src: ['test/mocha-*.js'] + } }, watch: { files: ['', 'test/**'], @@ -35,8 +37,8 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-qunit'); - grunt.loadNpmTasks('grunt-tape'); + grunt.loadNpmTasks('grunt-mocha-test'); // Default task. - grunt.registerTask('default', ['jshint', 'qunit', 'tape']); + grunt.registerTask('default', ['jshint', 'qunit', 'mochaTest']); }; diff --git a/package.json b/package.json index 2490270..7db828b 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ "grunt": "~0.4.1", "grunt-contrib-qunit": "~0.2.2", "grunt-contrib-jshint": "~0.6.4", - "grunt-tape": "0.0.2", + "grunt-mocha-test": "~0.8.2", "grunt-contrib-watch": "~0.5.3", "jslitmus": "~0.1.0", - "tape": "~2.3.2" + "mocha": "~1.17.1" }, "peerDependencies": { "grunt-cli": "*", diff --git a/test/mocha-require.js b/test/mocha-require.js new file mode 100644 index 0000000..d894ae9 --- /dev/null +++ b/test/mocha-require.js @@ -0,0 +1,11 @@ +/*global describe, it*/ +var assert = require('assert'); + +var Backbone = require('backbone'); +require('../backbone-nested'); + +describe("CommonJS support", function() { + it('should attach to Backbone when require backbone-nested', function() { + assert.ok(Backbone.NestedModel); + }); +}); diff --git a/test/tape-require.js b/test/tape-require.js deleted file mode 100644 index 2a61f45..0000000 --- a/test/tape-require.js +++ /dev/null @@ -1,8 +0,0 @@ -var test = require('tape'); -var Backbone = require('backbone'); -require('../backbone-nested'); - -test('require backbone-nested should attach to Backbone', function(t) { - t.ok(Backbone.NestedModel); - t.end(); -});