Skip to content

Commit b0fe013

Browse files
committed
Add error helpers; Add try-catch to options evaluation
1 parent 3ded46b commit b0fe013

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

bin/webpack.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*/
77
var path = require("path");
88

9+
var errorHelpers = require("../lib/ErrorHelpers");
10+
911
// Local version replace global one
1012
try {
1113
var localWebpack = require.resolve(path.join(process.cwd(), "node_modules", "webpack", "bin", "webpack.js"));
@@ -168,7 +170,23 @@ yargs.parse(process.argv.slice(2), (err, argv, output) => {
168170
argv["display"] = "verbose";
169171
}
170172

171-
var options = require("./convert-argv")(yargs, argv);
173+
try {
174+
Error.stackTraceLimit = 30;
175+
var options = require("./convert-argv")(yargs, argv);
176+
} catch(err) {
177+
var stack = errorHelpers.cutOffAfterFlag(err.stack, "webpack.config");
178+
var message = err.message + "\n" + errorHelpers.cutOffMultilineMessage(stack, err.message);
179+
180+
if(argv.color)
181+
console.error(
182+
`\u001b[1m\u001b[31m${message}\u001b[39m\u001b[22m`
183+
);
184+
else
185+
console.error(message);
186+
187+
process.exitCode = 1;
188+
return;
189+
}
172190

173191
function ifArg(name, fn, init) {
174192
if(Array.isArray(argv[name])) {

lib/ErrorHelpers.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66

77
const loaderFlag = "LOADER_EXECUTION";
88

9+
exports.cutOffAfterFlag = (stack, flag) => {
10+
stack = stack.split("\n");
11+
const idx = stack.findIndex(line => line.indexOf(flag) >= 0);
12+
if(idx >= 0) stack.length = idx + 1;
13+
return stack.join("\n");
14+
};
15+
916
exports.cutOffLoaderExecution = (stack) => {
1017
stack = stack.split("\n");
1118
for(let i = 0; i < stack.length; i++)
@@ -14,6 +21,13 @@ exports.cutOffLoaderExecution = (stack) => {
1421
return stack.join("\n");
1522
};
1623

24+
exports.cutOffMultilineMessage = (stack, message) => {
25+
stack = stack.split("\n");
26+
message = message.split("\n");
27+
28+
return stack.reduce((acc, line, idx) => line.indexOf(message[idx]) < 0 ? acc.concat(line) : acc, []).join("\n");
29+
};
30+
1731
exports.cutOffMessage = (stack, message) => {
1832
const nextLine = stack.indexOf("\n");
1933
if(nextLine === -1) {

0 commit comments

Comments
 (0)