webpack_rails 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9b1fd76152f832eb130b5c1565bcbabde788f78
|
4
|
+
data.tar.gz: 3c5192bb8d4e2c3d12733b08ea62932f9370c9cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84b22867941e1b5ca2040a30a68506499dd0379060b9ca622e8b29b0dac4325d65ba33e6a9ea2bd2d5af91f9af449ca705e4bfef5ae45ddd11b01b1f1b8b56fa
|
7
|
+
data.tar.gz: 5a5d175a7d84730c5187d7d8010db6eb813a8d06dcadab13ac326f853a46acb7cc29e0ee2c87238c37eff199eca674aa042ee93f1871f977a87265d80120b5f8
|
@@ -1,35 +1,50 @@
|
|
1
1
|
var stripAnsi = require('strip-ansi');
|
2
2
|
var jsStringEscape = require('js-string-escape');
|
3
3
|
|
4
|
-
// expected to be installed by the gem consumer (eg. the app)
|
4
|
+
// webpack is expected to be installed by the gem consumer (eg. the app)
|
5
5
|
var RawSource = require('webpack/lib/RawSource');
|
6
6
|
|
7
|
+
var errorTypePattern = /ModuleBuildError:[^:]*: /g;
|
8
|
+
|
7
9
|
// a webpack plugin to inject js which renders a message upon error
|
8
10
|
function ErrorMessagePlugin() {}
|
9
11
|
ErrorMessagePlugin.prototype.apply = function(compiler) {
|
10
|
-
|
12
|
+
// if there are errors, replace the output of any bundles with an error message
|
13
|
+
compiler.plugin('emit', function(compilation, done) {
|
11
14
|
if (compilation.errors.length > 0) {
|
12
|
-
var
|
13
|
-
|
14
|
-
|
15
|
-
'
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
'document.body.innerHTML = "'+errorPageHeader+'";\n'+
|
20
|
-
'var errorDisplay = document.createElement("pre");\n'+
|
21
|
-
'errorDisplay.textContent = "'+jsStringEscape(cleanedErrorMessage)+'";\n'+
|
22
|
-
'document.body.appendChild(errorDisplay);\n';
|
23
|
-
|
24
|
-
Object.keys(compilation.assets).forEach(function(assetName) {
|
25
|
-
compilation.assets[assetName] = new RawSource(errorJsCode)
|
26
|
-
});
|
15
|
+
var errorJsCode = renderErrorJsCode(compilation.errors);
|
16
|
+
|
17
|
+
Object.keys(compilation.assets)
|
18
|
+
.filter(isABundle) // don't mess with hot-update assets
|
19
|
+
.forEach(function(assetName) {
|
20
|
+
compilation.assets[assetName] = new RawSource(errorJsCode);
|
21
|
+
});
|
27
22
|
}
|
28
|
-
|
23
|
+
|
24
|
+
done();
|
29
25
|
}.bind(this));
|
30
26
|
};
|
31
27
|
|
32
|
-
|
28
|
+
function isABundle(assetName) {
|
29
|
+
return /\.bundle\./.test(assetName);
|
30
|
+
}
|
31
|
+
|
32
|
+
function renderErrorJsCode(errors) {
|
33
|
+
var cleanedErrorMessage = cleanCompilationErrorMessages(errors);
|
34
|
+
var errorPageHeader = ''+
|
35
|
+
'<style>body { font-family: sans-serif; }</style>'+
|
36
|
+
'<h1>Webpack Build Error</h1>';
|
37
|
+
|
38
|
+
var errorJsCode = ''+
|
39
|
+
'document.body.className += " webpack-build-error";'+
|
40
|
+
'document.body.innerHTML = "'+errorPageHeader+'";\n'+
|
41
|
+
'var errorDisplay = document.createElement("pre");\n'+
|
42
|
+
'errorDisplay.textContent = "'+jsStringEscape(cleanedErrorMessage)+'";\n'+
|
43
|
+
'document.body.appendChild(errorDisplay);\n';
|
44
|
+
|
45
|
+
return errorJsCode;
|
46
|
+
}
|
47
|
+
|
33
48
|
function cleanCompilationErrorMessages(errors) {
|
34
49
|
return stripAnsi(errors.join('\n\n')).replace(errorTypePattern, '');
|
35
50
|
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
var fs = require('fs');
|
2
|
+
|
3
|
+
var loggingToFile = Boolean(process.env.WEBPACK_TASK_LOGGING);
|
4
|
+
|
5
|
+
function logLine(message) {
|
6
|
+
fs.appendFileSync('log/webpack-task.log', new Date()+' -- '+message+'\n');
|
7
|
+
}
|
8
|
+
|
9
|
+
function log(message) {
|
10
|
+
if (loggingToFile) logLine(message);
|
11
|
+
}
|
12
|
+
|
13
|
+
function logErr(err) {
|
14
|
+
logLine(err.toString()+' -- '+JSON.stringify(err.stack));
|
15
|
+
}
|
16
|
+
|
17
|
+
log.error = logErr;
|
18
|
+
|
19
|
+
module.exports = log;
|
@@ -1,4 +1,3 @@
|
|
1
|
-
var fs = require('fs');
|
2
1
|
var path = require('path');
|
3
2
|
var xtend = require('xtend');
|
4
3
|
var isArray = require('is-array');
|
@@ -12,10 +11,9 @@ var webpackDevMiddleware = require('webpack-dev-middleware');
|
|
12
11
|
var webpackHotMiddleware = require('webpack-hot-middleware');
|
13
12
|
var webpack = require('webpack');
|
14
13
|
|
14
|
+
var log = require('./log');
|
15
15
|
var ErrorMessagePlugin = require('./ErrorMessagePlugin');
|
16
16
|
|
17
|
-
var loggingToFile = Boolean(process.env.WEBPACK_TASK_LOGGING);
|
18
|
-
|
19
17
|
process.on('exit', function(code) {
|
20
18
|
log(process.pid+' About to exit with code:', code);
|
21
19
|
});
|
@@ -30,7 +28,7 @@ module.exports = function waitForServer(opts, done) {
|
|
30
28
|
log('starting webpack');
|
31
29
|
runWebpackDevServer(opts, function(err, createdServer) {
|
32
30
|
if (err) {
|
33
|
-
|
31
|
+
log.error(err);
|
34
32
|
done(err);
|
35
33
|
}
|
36
34
|
|
@@ -90,6 +88,7 @@ function makeDevServerConfig(opts) {
|
|
90
88
|
new webpack.optimize.OccurenceOrderPlugin(),
|
91
89
|
// https://webpack.github.io/docs/webpack-dev-server.html#hot-module-replacement
|
92
90
|
new webpack.HotModuleReplacementPlugin(),
|
91
|
+
new webpack.NoErrorsPlugin(),
|
93
92
|
new ErrorMessagePlugin(),
|
94
93
|
]),
|
95
94
|
});
|
@@ -113,10 +112,5 @@ function makeDevServerConfig(opts) {
|
|
113
112
|
return devServerConfig;
|
114
113
|
}
|
115
114
|
|
116
|
-
function log(message) {
|
117
|
-
if (loggingToFile) fs.appendFileSync('log/webpack-task.log', new Date()+' -- '+message+'\n');
|
118
|
-
}
|
119
115
|
|
120
|
-
|
121
|
-
log(err.toString()+' -- '+JSON.stringify(err.stack));
|
122
|
-
}
|
116
|
+
|
@@ -2,11 +2,7 @@ var webpack = require('webpack');
|
|
2
2
|
var fs = require('fs');
|
3
3
|
var path = require('path');
|
4
4
|
|
5
|
-
var
|
6
|
-
var loggingToFile = true;
|
7
|
-
function log(message) {
|
8
|
-
if (loggingToFile) fs.appendFile('log/webpack-task.log', message+'\n');
|
9
|
-
}
|
5
|
+
var log = require('./log');
|
10
6
|
|
11
7
|
// TODO: add support for multiple builds using multiple webpack configs which
|
12
8
|
// can each be waited upon independently
|
@@ -22,8 +18,6 @@ var lastBuildResult = null;
|
|
22
18
|
function buildComplete(buildResult) {
|
23
19
|
lastBuildResult = buildResult;
|
24
20
|
|
25
|
-
if (stdoutLogging) console.log('rebuild complete');
|
26
|
-
|
27
21
|
currentBuildCallbacks.forEach(function(callback) {
|
28
22
|
log('async completion callback');
|
29
23
|
callback(buildResult);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webpack_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Friend
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: node_task
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/webpack_rails.rb
|
49
49
|
- lib/webpack_rails/ErrorMessagePlugin.js
|
50
50
|
- lib/webpack_rails/engine.rb
|
51
|
+
- lib/webpack_rails/log.js
|
51
52
|
- lib/webpack_rails/node_modules/cors/CONTRIBUTING.md
|
52
53
|
- lib/webpack_rails/node_modules/cors/LICENSE
|
53
54
|
- lib/webpack_rails/node_modules/cors/README.md
|