From 9806cd44bfbf30013ee0bff9c338f367c37e6e81 Mon Sep 17 00:00:00 2001 From: Robert Haritonov Date: Tue, 6 Oct 2015 23:12:29 +0200 Subject: [PATCH] use cached version in prod mode, add ejs pre renderer loader --- core/loaders/preejs-loader.js | 12 ++++++++++++ core/middleware/index.js | 25 +++++++++++++++++++++---- package.json | 2 +- 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 core/loaders/preejs-loader.js diff --git a/core/loaders/preejs-loader.js b/core/loaders/preejs-loader.js new file mode 100644 index 0000000..fc48456 --- /dev/null +++ b/core/loaders/preejs-loader.js @@ -0,0 +1,12 @@ + +var path = require('path'); +var ejs = require(path.join(global.pathToApp, 'core/ejsWithHelpers.js')); + +module.exports = function (source) { + try { + return ejs.render(source, {info: global.__currentSpecInfo__}); + } catch(e) { + console.log('error prerendering webpack files', e); + return source; + } +}; \ No newline at end of file diff --git a/core/middleware/index.js b/core/middleware/index.js index bc24818..ed44787 100644 --- a/core/middleware/index.js +++ b/core/middleware/index.js @@ -32,9 +32,19 @@ var processRequest = function (req, res, next) { var outputPath = path.join(specPath, 'build/index.js'); var insertReactTpl = fs.readFileSync(path.join(currentDir, '../templates/insert-react.ejs'), 'utf-8'); + if ( + (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'presentation') && + fs.existsSync(outputPath) + ) { + req.specData.renderedHtml += ''; + next(); + return; + } + fs.outputFileSync(outputPath, ejs.render(insertReactTpl)); - //if (false) { + global.__currentSpecInfo__ = req.specData.info; + if (fs.existsSync(jsxFilePath)) { webpack({ entry: outputPath, @@ -45,14 +55,21 @@ var processRequest = function (req, res, next) { devtool: "#inline-source-map", module: { loaders: [ - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'} + // TODO: load stripejs only for styleguide + {test: /\.jsx?$/, loader: 'babel-loader!preejs'} ] }, resolveLoader: { - root: path.join(currentDir, '../../node_modules') + modulesDirectories: [ + path.join(currentDir, '../../node_modules'), + path.join(currentDir, '../loaders'), + 'node_modules' + ] } - }, function(err) { + }, function(err, stats) { if (err) console.log('error', err); + if (stats.compilation.errors) console.log(stats.compilation.errors.toString()); + if (stats.compilation.warnings) console.log(stats.compilation.warnings.toString()); next(); }); diff --git a/package.json b/package.json index 2b07f5f..d984ff1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sourcejs-webpack", - "version": "0.1.0", + "version": "0.2.0", "description": "SourceJS webpack builder middleware.", "repository": { "type": "git",