diff --git a/default_index.html b/default_index.html index 51fec39..7775b31 100644 --- a/default_index.html +++ b/default_index.html @@ -5,6 +5,8 @@ React Starter - + {% for (var chunk in o.htmlWebpackPlugin.assets) { %} + + {% } %} diff --git a/index.js b/index.js index f41cdb7..5d73257 100644 --- a/index.js +++ b/index.js @@ -5,15 +5,6 @@ var tmpl = require('blueimp-tmpl').tmpl; function HtmlWebpackPlugin() { } -HtmlWebpackPlugin.prototype.htmlWebpackPluginJson = function(webpackStatsJson) { - json = {}; - json.assets = {}; - for (var chunk in webpackStatsJson.assetsByChunkName) { - json.assets[chunk] = webpackStatsJson.assetsByChunkName[chunk]; - } - return json; -}; - HtmlWebpackPlugin.prototype.apply = function(compiler) { var self = this; compiler.plugin('done', function(stats) { @@ -27,4 +18,14 @@ HtmlWebpackPlugin.prototype.apply = function(compiler) { }); }; +HtmlWebpackPlugin.prototype.htmlWebpackPluginJson = function(webpackStatsJson) { + var json = {}; + json.assets = {}; + for (var chunk in webpackStatsJson.assetsByChunkName) { + json.assets[chunk] = webpackStatsJson.assetsByChunkName[chunk]; + } + + return json; +}; + module.exports = HtmlWebpackPlugin; diff --git a/package.json b/package.json index 3ee2e6e..f35a5ab 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "devDependencies": { "jasmine-node": "^1.14.5", "jshint": "^2.5.2", + "rimraf": "^2.2.8", "webpack": "^1.3.3-beta1" }, "dependencies": { diff --git a/spec/HtmlWebpackPluginSpec.js b/spec/HtmlWebpackPluginSpec.js index 2d2f89e..522cb3b 100644 --- a/spec/HtmlWebpackPluginSpec.js +++ b/spec/HtmlWebpackPluginSpec.js @@ -1,26 +1,51 @@ var path = require('path'); var fs = require('fs'); var webpack = require('webpack'); - +var rm_rf = require('rimraf'); var HtmlWebpackPlugin = require('../index.js'); -describe('HtmlWebpackPlugin', function() { - it('generates a default index.html file for a single entry point', function(done) { - var outputDir = path.join(__dirname, '..', 'dist'); - var outputHtmlFile = path.join(outputDir, 'index.html'); +var OUTPUT_DIR = path.join(__dirname, '..', 'dist'); - webpack({ +function testHtmlPlugin(webpackConfig, expectedResults, done) { + var outputHtmlFile = path.join(OUTPUT_DIR, 'index.html'); + webpackConfig.plugins = [new HtmlWebpackPlugin()]; + webpack(webpackConfig, function(err, stats) { + expect(err).toBeFalsy(); + expect(stats.hasErrors()).toBe(false); + var htmlContent = fs.readFileSync(outputHtmlFile).toString(); + for (var i = 0; i < expectedResults.length; i++) { + expect(htmlContent).toContain(expectedResults[i]); + } + done(); + }); +} + +describe('HtmlWebpackPlugin', function() { + beforeEach(function(done) { + rm_rf(OUTPUT_DIR, done); + }); + + it('generates a default index.html file for a single entry point', function(done) { + testHtmlPlugin({ entry: path.join(__dirname, 'fixtures', 'index.js'), output: { - path: outputDir, + path: OUTPUT_DIR, filename: 'index_bundle.js' + } + }, ['