diff --git a/README.md b/README.md index e190a13..36f8649 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,14 @@ template({ foo : 42 }, function (error, html) { }); ``` -Example using a promise: +Example using a promise library such as `bluebird`: ``` require('dustjs-loader').register({ - path : 'lib/templates', - promise : true + path : 'lib/templates', + + // Promises library you with to use, please make sure it `npm install` it. + promises : 'bluebird' }); var template = require('./template.dust'); @@ -48,6 +50,17 @@ template({ foo : 42 }) }); ``` +Example using ES6 promise: + +``` +require('dustjs-loader').register({ + path : 'lib/templates', + + // Will use promises but won't require any libraries expecting browser to provide. + promises : true +}); +``` + ## Dust templates in the browser The [dustjs-browserify module](https://github.com/scottbrady/dustjs-browserify) makes it easy to use dust templates in the browser. diff --git a/lib/loader.js b/lib/loader.js index 374ac6a..8ebdce9 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -25,8 +25,8 @@ var fs = require('fs'), * Example using a promise: * * require('dustjs-loader').register({ - * path : 'lib/templates', - * promise : true + * path : 'lib/templates', + * promises : true // or `bluebird` * }); * var template = require('./template.dust'); * template({ foo : 42 }) @@ -65,7 +65,11 @@ var DustjsLoader = { template = dust.compile(source, name); if (options.promise) { - compiled = DustjsModulize.wrapWithPromise(name, template); + throw new Error('dustjs-browserify: `promise` option is deprecated. Please see README.'); + } + + if (options.promises) { + compiled = DustjsModulize.wrapWithPromise(name, template, options.promises); } else { compiled = DustjsModulize.wrap(name, template); } diff --git a/lib/modulize.js b/lib/modulize.js index 6bf7ad2..517718c 100644 --- a/lib/modulize.js +++ b/lib/modulize.js @@ -14,11 +14,18 @@ module.exports = { "}).call(this);\n"; }, - wrapWithPromise: function(name, template) { + wrapWithPromise: function(name, template, promises) { + var promisesRequire = ''; + + // `true` value indicates user wants ES6 promises or possibly a registered polyfill + if (promises && promises !== true) { + promisesRequire = "var Promise = require('" + promises + "');\n"; + } + return "" + "(function() {\n" + - " var dust = require('dustjs-linkedin'),\n" + - " Promise = require('bluebird');\n" + + " var dust = require('dustjs-linkedin');\n" + + promisesRequire + template + " module.exports = function (context) {\n" + " context.__required = true;\n" + diff --git a/package.json b/package.json index 537be4c..0c2ee9c 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ }, "homepage": "https://github.com/scottbrady/dustjs-loader", "dependencies": { - "bluebird": "~2.7.1", "dustjs-linkedin": "~2.5.1" } } \ No newline at end of file