From 37d40d888c9eea5088cb9eaad423c106eb9c8504 Mon Sep 17 00:00:00 2001 From: laland Date: Mon, 7 Nov 2016 18:01:38 +0300 Subject: [PATCH] feat: Adds exportAsDefault --- README.md | 8 ++++++-- index.js | 12 +++++++++--- test/loaderTest.js | 21 ++++++++++++++------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4fdb7535..25646974 100644 --- a/README.md +++ b/README.md @@ -141,9 +141,13 @@ require("html?interpolate=require!./file.ftl");
${require('./components/gallery.html')}
``` -### Export format +### Export formats -By default HTML is exported with ```module.exports```, but you can use ```exportAsEs6Default``` flag to export it as ES6 default export (via ```exports.default```) +There are different export formats available: + ++ ```module.exports``` (default, cjs format). "Hello world" becomes ```module.exports = "Hello world";``` ++ ```exports.default``` (when ```exportAsDefault``` param is set, es6to5 format). "Hello world" becomes ```exports.default = "Hello world";``` ++ ```exports default``` (when ```exportAsEs6Default``` param is set, es6 format). "Hello world" becomes ```exports default "Hello world";``` ### Advanced options diff --git a/index.js b/index.js index 78c0af71..413543c9 100644 --- a/index.js +++ b/index.js @@ -125,9 +125,15 @@ module.exports = function(content) { content = JSON.stringify(content); } - var exportsString = config.exportAsEs6Default? "exports.default": "module.exports"; - - return exportsString + " = " + content.replace(/xxxHTMLLINKxxx[0-9\.]+xxx/g, function(match) { + var exportsString = "module.exports = "; + if (config.exportAsDefault) { + exportsString = "exports.default = "; + + } else if (config.exportAsEs6Default) { + exportsString = "exports default "; + } + + return exportsString + content.replace(/xxxHTMLLINKxxx[0-9\.]+xxx/g, function(match) { if(!data[match]) return match; return '" + require(' + JSON.stringify(loaderUtils.urlToRequest(data[match], root)) + ') + "'; }) + ";"; diff --git a/test/loaderTest.js b/test/loaderTest.js index a5a67f73..a644aecd 100644 --- a/test/loaderTest.js +++ b/test/loaderTest.js @@ -126,11 +126,18 @@ describe("loader", function() { 'module.exports = "";' ); }); - it("should export as es6 default export", function() { - loader.call({ - query: "?exportAsEs6Default" - }, '

Hello world!

').should.be.eql( - 'exports.default = "

Hello world!

";' - ); - }); + it("should export as default export for es6to5 transpilation", function() { + loader.call({ + query: "?exportAsDefault" + }, '

Hello world!

').should.be.eql( + 'exports.default = "

Hello world!

";' + ); + }); + it("should export as es6 default export", function() { + loader.call({ + query: "?exportAsEs6Default" + }, '

Hello world!

').should.be.eql( + 'exports default "

Hello world!

";' + ); + }); });