Permalink
Browse files

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
  • Loading branch information...
1 parent 63fdb92 commit 8517352e209569f5a373d7a61ef4a673582d9616 @kpdecker kpdecker committed Dec 14, 2015
Showing with 7 additions and 283 deletions.
  1. +1 −9 FAQ.md
  2. +5 −42 Gruntfile.js
  3. +1 −2 package.json
  4. +0 −105 spec/amd-runtime.html
  5. +0 −125 spec/amd.html
View
@@ -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.
View
@@ -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');
View
@@ -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
View
@@ -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>
View
@@ -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>

0 comments on commit 8517352

Please sign in to comment.