Skip to content

Commit b13829d

Browse files
feat: use babel code frame
1 parent bb94b1e commit b13829d

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

packages/cli/lib/lib/babel-config.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ module.exports = function(env, options = {}) {
2525
require.resolve('@babel/plugin-syntax-dynamic-import'),
2626
require.resolve('@babel/plugin-transform-object-assign'),
2727
[require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
28-
[require.resolve('@babel/plugin-proposal-class-properties'), { loose: true }],
28+
[
29+
require.resolve('@babel/plugin-proposal-class-properties'),
30+
{ loose: true },
31+
],
2932
require.resolve('@babel/plugin-proposal-object-rest-spread'),
3033
isProd &&
3134
require.resolve('babel-plugin-transform-react-remove-prop-types'),

packages/cli/lib/lib/webpack/prerender.js

+10-21
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
const { red, gray } = require('kleur');
1+
const { red } = require('kleur');
22
const { resolve } = require('path');
33
const { readFileSync } = require('fs');
44
const stackTrace = require('stack-trace');
55
const { SourceMapConsumer } = require('source-map');
66
const { error, info } = require('../../util');
77
const outdent = require('outdent');
8+
const { codeFrameColumns } = require('@babel/code-frame');
89

910
module.exports = function prerender(env, params) {
1011
params = params || {};
@@ -95,15 +96,14 @@ async function handlePrerenderError(err, env, stack, entry) {
9596
}
9697

9798
if (position) {
98-
info(position.source);
99+
info(JSON.stringify(position));
99100
position.source = position.source
100101
.replace('webpack://', '.')
101102
.replace(/^.*~\/((?:@[^/]+\/)?[^/]+)/, (s, name) =>
102103
require
103104
.resolve(name)
104105
.replace(/^(.*?\/node_modules\/(@[^/]+\/)?[^/]+)(\/.*)$/, '$1')
105106
);
106-
info(position.source);
107107
} else {
108108
position = {
109109
source: stack.getFileName(),
@@ -114,24 +114,13 @@ async function handlePrerenderError(err, env, stack, entry) {
114114

115115
const sourceLines = getLines(env, position);
116116

117-
let sourceCodeHighlight = '';
118-
if (sourceLines) {
119-
const lnrl = position.line.toString().length + 2;
120-
const line = position.line;
121-
const un = undefined;
122-
123-
const pad = l =>
124-
(l === undefined ? '' : (line + l || '') + '').padStart(lnrl);
125-
126-
sourceCodeHighlight = gray(outdent`
127-
${pad(-2)} | ${sourceLines[line - 3] || ''}
128-
${pad(-1)} | ${sourceLines[line - 2] || ''}
129-
${pad(-0)} | ${sourceLines[line - 1] || ''}
130-
${pad(un)} | ${red('^'.padStart(position.column + 1))}
131-
${pad(+1)} | ${sourceLines[line + 0] || ''}
132-
${pad(+2)} | ${sourceLines[line + 1] || ''}
133-
`);
134-
}
117+
let sourceCodeHighlight = sourceLines
118+
? codeFrameColumns(
119+
sourceLines.join('\n'),
120+
{ start: { line: position.line, column: position.column } },
121+
{ highlightCode: true }
122+
)
123+
: '';
135124

136125
const stderr = process.stderr.write.bind(process.stderr);
137126

packages/cli/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"preact-render-to-string": "*"
6565
},
6666
"dependencies": {
67+
"@babel/code-frame": "^7.5.5",
6768
"@babel/core": "^7.4.5",
6869
"@babel/plugin-proposal-class-properties": "^7.4.4",
6970
"@babel/plugin-proposal-decorators": "^7.4.4",

yarn.lock

+8-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@
4444
dependencies:
4545
"@babel/highlight" "^7.0.0"
4646

47+
"@babel/code-frame@^7.5.5":
48+
version "7.5.5"
49+
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
50+
integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
51+
dependencies:
52+
"@babel/highlight" "^7.0.0"
53+
4754
"@babel/core@^7.1.0", "@babel/core@^7.4.0", "@babel/core@^7.4.5":
4855
version "7.5.4"
4956
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd"
@@ -10216,7 +10223,7 @@ postcss-discard-overridden@^4.0.1:
1021610223
dependencies:
1021710224
postcss "^7.0.0"
1021810225

10219-
postcss-load-config@^2.0.0:
10226+
postcss-load-config@^2.0.0, postcss-load-config@^2.1.0:
1022010227
version "2.1.0"
1022110228
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
1022210229
integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==

0 commit comments

Comments
 (0)