Skip to content

Commit 6277afd

Browse files
authored
chore: Generate source maps in the development environment (#14876)
1 parent 7ddad47 commit 6277afd

2 files changed

Lines changed: 42 additions & 12 deletions

File tree

Gulpfile.mjs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ function createWorker(useWorker) {
245245
}
246246

247247
async function buildBabel(useWorker, ignore = []) {
248+
const enableSourceMap = !process.env.IS_PUBLISH;
249+
248250
const worker = createWorker(useWorker);
249251
const files = await new Promise((resolve, reject) => {
250252
glob(
@@ -263,13 +265,27 @@ async function buildBabel(useWorker, ignore = []) {
263265
for (const file of files) {
264266
// @example ./packages/babel-parser/src/index.js
265267
const dest = "./" + mapSrcToLib(file.slice(2));
266-
promises.push(worker.transform(file, dest));
268+
promises.push(
269+
worker.transform(file, dest, { sourceMaps: enableSourceMap })
270+
);
267271
}
268-
return Promise.allSettled(promises).finally(() => {
269-
if (worker.end !== undefined) {
270-
worker.end();
271-
}
272-
});
272+
return Promise.allSettled(promises)
273+
.then(results => {
274+
results.forEach(result => {
275+
if (result.status == "rejected") {
276+
if (process.env.WATCH_SKIP_BUILD) {
277+
console.error(result.reason);
278+
} else {
279+
throw result.reason;
280+
}
281+
}
282+
});
283+
})
284+
.finally(() => {
285+
if (worker.end !== undefined) {
286+
worker.end();
287+
}
288+
});
273289
}
274290

275291
/**

babel-worker.cjs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const { transformAsync } = require("@babel/core");
22
const { mkdirSync, statSync, readFileSync, writeFileSync } = require("fs");
3-
const { dirname } = require("path");
3+
const path = require("path");
44
const { log } = require("./scripts/utils/logger.cjs");
55

66
let chalk;
@@ -20,26 +20,40 @@ function needCompile(src, dest) {
2020
}
2121
}
2222
const srcStat = statSync(src);
23-
return srcStat.mtimeMs > destStat.mtimeMs;
23+
return srcStat.mtimeMs >= destStat.mtimeMs;
2424
}
2525

26-
exports.transform = async function transform(src, dest) {
26+
exports.transform = async function transform(src, dest, opts = {}) {
2727
if (!chalk) await chalkP;
2828

29-
mkdirSync(dirname(dest), { recursive: true });
29+
mkdirSync(path.dirname(dest), { recursive: true });
3030
if (!needCompile(src, dest)) {
3131
return;
3232
}
3333
log(`Compiling '${chalk.cyan(src)}'...`);
3434
const content = readFileSync(src, { encoding: "utf8" });
35-
const { code } = await transformAsync(content, {
35+
const { code, map } = await transformAsync(content, {
3636
filename: src,
37+
sourceFileName: `../src/${path.basename(src)}`,
3738
caller: {
3839
// We have wrapped packages/babel-core/src/config/files/configuration.js with feature detection
3940
supportsDynamicImport: true,
4041
name: "babel-worker",
4142
},
43+
...opts,
4244
});
4345

44-
writeFileSync(dest, code, "utf8");
46+
if (map) {
47+
writeFileSync(
48+
dest,
49+
`${code}
50+
51+
//# sourceMappingURL=${path.basename(dest)}.map
52+
`,
53+
"utf8"
54+
);
55+
writeFileSync(dest + ".map", JSON.stringify(map), "utf8");
56+
} else {
57+
writeFileSync(dest, code, "utf8");
58+
}
4559
};

0 commit comments

Comments
 (0)