diff options
author | kpdecker <kpdecker@gmail.com> | 2015-12-14 02:22:30 -0600 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2015-12-14 02:31:13 -0600 |
commit | 8517352e209569f5a373d7a61ef4a673582d9616 (patch) | |
tree | bbd3f2a8a400fdb3329b1a55373313e19c4f17f2 | |
parent | 63fdb92472cf7f6f8a576baa31f4aa2c5d1b643c (diff) | |
download | handlebars.js-8517352e209569f5a373d7a61ef4a673582d9616.zip handlebars.js-8517352e209569f5a373d7a61ef4a673582d9616.tar.gz handlebars.js-8517352e209569f5a373d7a61ef4a673582d9616.tar.bz2 |
Remove amd files from the build
Users can utilize the UMD library if they are still using require.js and if they need to have specific modules, they can consume the cjs or es6 modules via webpack or similar.
Fix for #1096
-rw-r--r-- | FAQ.md | 10 | ||||
-rw-r--r-- | Gruntfile.js | 47 | ||||
-rw-r--r-- | package.json | 3 | ||||
-rw-r--r-- | spec/amd-runtime.html | 105 | ||||
-rw-r--r-- | spec/amd.html | 125 |
5 files changed, 7 insertions, 283 deletions
@@ -47,14 +47,6 @@ Should these match, please file an issue with us, per our [issue filing guidelines](https://github.com/wycats/handlebars.js/blob/master/CONTRIBUTING.md#reporting-issues). -1. Why doesn't IE like the `default` name in the AMD module? - - Some browsers such as particular versions of IE treat `default` as a reserved word in JavaScript source files. To safely use this you need to reference this via the `Handlebars['default']` lookup method. This is an unfortunate side effect of the shims necessary to backport the Handlebars ES6 code to all current browsers. - 1. How do I load the runtime library when using AMD? - There are two options for loading under AMD environments. The first is to use the `handlebars.runtime.amd.js` file. This may require a [path mapping](https://github.com/wycats/handlebars.js/blob/master/spec/amd-runtime.html#L31) as well as access via the `default` field. - - The other option is to load the `handlebars.runtime.js` UMD build, which might not require path configuration and exposes the library as both the module root and the `default` field for compatibility. - - If not using ES6 transpilers or accessing submodules in the build the former option should be sufficient for most use cases. + The `handlebars.runtime.js` file includes a UMD build, which exposes the library as both the module root and the `default` field for compatibility. diff --git a/Gruntfile.js b/Gruntfile.js index 97cfff0..73c5215 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -44,23 +44,6 @@ module.exports = function(grunt) { }, babel: { - options: { - sourceMaps: 'inline', - loose: ['es6.modules'], - auxiliaryCommentBefore: 'istanbul ignore next' - }, - amd: { - options: { - modules: 'amd' - }, - files: [{ - expand: true, - cwd: 'lib/', - src: '**/!(index).js', - dest: 'dist/amd/' - }] - }, - cjs: { options: { modules: 'common' @@ -102,25 +85,6 @@ module.exports = function(grunt) { } }, - requirejs: { - options: { - optimize: 'none', - baseUrl: 'dist/amd/' - }, - dist: { - options: { - name: 'handlebars', - out: 'dist/handlebars.amd.js' - } - }, - runtime: { - options: { - name: 'handlebars.runtime', - out: 'dist/handlebars.runtime.amd.js' - } - } - }, - uglify: { options: { mangle: true, @@ -160,7 +124,7 @@ module.exports = function(grunt) { all: { options: { build: process.env.TRAVIS_JOB_ID, - urls: ['http://localhost:9999/spec/?headless=true', 'http://localhost:9999/spec/amd.html?headless=true'], + urls: ['http://localhost:9999/spec/?headless=true'], detailedError: true, concurrency: 4, browsers: [ @@ -176,11 +140,12 @@ module.exports = function(grunt) { sanity: { options: { build: process.env.TRAVIS_JOB_ID, - urls: ['http://localhost:9999/spec/umd.html?headless=true', 'http://localhost:9999/spec/amd-runtime.html?headless=true', 'http://localhost:9999/spec/umd-runtime.html?headless=true'], + urls: ['http://localhost:9999/spec/umd.html?headless=true', 'http://localhost:9999/spec/umd-runtime.html?headless=true'], detailedError: true, concurrency: 2, browsers: [ - {browserName: 'chrome'} + {browserName: 'chrome'}, + {browserName: 'internet explorer', version: 10, platform: 'Windows 8'} ] } } @@ -205,19 +170,17 @@ module.exports = function(grunt) { 'node', 'globals']); - this.registerTask('amd', ['babel:amd', 'requirejs']); this.registerTask('node', ['babel:cjs']); this.registerTask('globals', ['webpack']); this.registerTask('tests', ['concat:tests']); - this.registerTask('release', 'Build final packages', ['eslint', 'amd', 'uglify', 'test:min', 'copy:dist', 'copy:components', 'copy:cdnjs']); + this.registerTask('release', 'Build final packages', ['eslint', 'uglify', 'test:min', 'copy:dist', 'copy:components', 'copy:cdnjs']); // Load tasks from npm grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-contrib-requirejs'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-babel'); diff --git a/package.json b/package.json index a5b7887..ffd742c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,6 @@ "grunt-contrib-concat": "0.x", "grunt-contrib-connect": "0.x", "grunt-contrib-copy": "0.x", - "grunt-contrib-requirejs": "0.x", "grunt-contrib-uglify": "0.x", "grunt-contrib-watch": "0.x", "grunt-eslint": "^17.1.0", @@ -68,7 +67,7 @@ "jspm": { "main": "handlebars", "directories": { - "lib": "dist/amd" + "lib": "dist/cjs" }, "buildConfig": { "minify": true diff --git a/spec/amd-runtime.html b/spec/amd-runtime.html deleted file mode 100644 index 7cc64f1..0000000 --- a/spec/amd-runtime.html +++ /dev/null @@ -1,105 +0,0 @@ -<html> - <head> - <title>Mocha</title> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <link rel="stylesheet" href="/node_modules/mocha/mocha.css" /> - <style> - .headless .suite > h1, - .headless .test.pass { - display: none; - } - </style> - - <script> - // Show only errors in "headless", non-interactive mode. - if (/headless=true/.test(location.href)) { - document.documentElement.className = 'headless'; - } - </script> - <script src="/node_modules/mocha/mocha.js"></script> - <script> - mocha.setup('bdd'); - </script> - - <script src="/spec/env/json2.js"></script> - <script src="/spec/env/require.js"></script> - - <script src="/spec/env/common.js"></script> - <script> - var requireFailure; - - requirejs.config({ - paths: { - 'handlebars.runtime': '/dist/handlebars.runtime.amd' - } - }); - requirejs.onError = function (err) { - requireFailure = err; - }; - </script> - <script> - onload = function(){ - require(['handlebars.runtime'], function(Handlebars) { - describe('runtime', function() { - it('should load', function() { - equal(!!Handlebars['default'].template, true); - equal(!!Handlebars['default'].VERSION, true); - }); - }); - - mocha.globals(['mochaResults']) - // The test harness leaks under FF. We should have decent global leak coverage from other tests - if (!navigator.userAgent.match(/Firefox\/([\d.]+)/)) { - mocha.checkLeaks(); - } - var runner = mocha.run(); - - //Reporting for saucelabs - var failedTests = []; - runner.on('end', function(){ - window.mochaResults = runner.stats; - window.mochaResults.reports = failedTests; - }); - - runner.on('fail', logFailure); - - // Inject any require initilizer failures into the first test so they are properly - // reported. - if (requireFailure) { - runner.on('hook end', function(hook){ - if (requireFailure) { - runner.uncaught(requireFailure); - requireFailure = undefined; - } - }); - } - - function logFailure(test, err){ - - var flattenTitles = function(test){ - var titles = []; - while (test.parent.title){ - titles.push(test.parent.title); - test = test.parent; - } - return titles.reverse(); - }; - - failedTests.push({ - name: test.title, - result: false, - message: err.message, - stack: err.stack, - titles: flattenTitles(test) - }); - } - }); - }; - </script> - </head> - <body> - <div id="mocha"></div> - </body> -</html> diff --git a/spec/amd.html b/spec/amd.html deleted file mode 100644 index 1149dc7..0000000 --- a/spec/amd.html +++ /dev/null @@ -1,125 +0,0 @@ -<!doctype html> -<html> - <head> - <title>Mocha</title> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <link rel="stylesheet" href="/node_modules/mocha/mocha.css" /> - <style> - .headless .suite > h1, - .headless .test.pass { - display: none; - } - </style> - - <script> - // Show only errors in "headless", non-interactive mode. - if (/headless=true/.test(location.href)) { - document.documentElement.className = 'headless'; - } - </script> - <script src="/node_modules/mocha/mocha.js"></script> - <script> - mocha.setup('bdd'); - </script> - - <script src="/spec/env/json2.js"></script> - <script src="/spec/env/require.js"></script> - - <script src="/spec/env/common.js"></script> - <script> - var requireFailure; - - requirejs.config({ - paths: { - handlebars: '/dist/handlebars.amd', - tests: '/tmp/tests' - } - }); - requirejs.onError = function (err) { - requireFailure = err; - }; - - var CompilerContext = { - compile: function(template, options) { - var templateSpec = handlebarsEnv.precompile(template, options); - return handlebarsEnv.template(safeEval(templateSpec)); - }, - compileWithPartial: function(template, options) { - return handlebarsEnv.compile(template, options); - } - }; - - function safeEval(templateSpec) { - try { - var ret; - eval('ret = ' + templateSpec); - return ret; - } catch (err) { - console.error(templateSpec); - throw err; - } - } - </script> - <script> - onload = function(){ - - require(['handlebars'], function(Handlebars) { - window.Handlebars = Handlebars['default']; - - require(['tests'], function(Handlebars) { - mocha.globals(['mochaResults']) - // The test harness leaks under FF. We should have decent global leak coverage from other tests - if (!navigator.userAgent.match(/Firefox\/([\d.]+)/)) { - mocha.checkLeaks(); - } - var runner = mocha.run(); - - //Reporting for saucelabs - var failedTests = []; - runner.on('end', function(){ - window.mochaResults = runner.stats; - window.mochaResults.reports = failedTests; - }); - - runner.on('fail', logFailure); - - // Inject any require initilizer failures into the first test so they are properly - // reported. - if (requireFailure) { - runner.on('hook end', function(hook){ - if (requireFailure) { - runner.uncaught(requireFailure); - requireFailure = undefined; - } - }); - } - - function logFailure(test, err){ - function flattenTitles(test){ - var titles = []; - while (test.parent.title){ - titles.push(test.parent.title); - test = test.parent; - } - return titles.reverse(); - } - - failedTests.push({ - name: test.title, - result: false, - message: err.message, - stack: err.stack, - titles: flattenTitles(test) - }); - } - }); - }); - }; - </script> - </head> - <body> - <div id="mocha"></div> - </body> -</html> |