11const { transformAsync } = require ( "@babel/core" ) ;
22const { mkdirSync, statSync, readFileSync, writeFileSync } = require ( "fs" ) ;
3- const { dirname } = require ( "path" ) ;
3+ const path = require ( "path" ) ;
44const { log } = require ( "./scripts/utils/logger.cjs" ) ;
55
66let 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