Skip to content

Commit 14dcb03

Browse files
fenix20113yuriipaliistyfle
authored
fix: Fix source maps (#818)
* Fix missing source map register if the v8 cache enabled * Fix missing source maps in assets if the v8 cache disabled Co-authored-by: yuriipalii <[email protected]> Co-authored-by: Steven <[email protected]>
1 parent 736e382 commit 14dcb03

File tree

10 files changed

+42
-6
lines changed

10 files changed

+42
-6
lines changed

src/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -490,25 +490,25 @@ function ncc (
490490
// custom terser phase used over Webpack integration for this reason
491491
if (!result || result.code === undefined)
492492
throw null;
493-
493+
494494
({ code, map } = {
495495
code: result.code,
496496
map: map ? JSON.parse(result.map) : undefined
497497
});
498498
}
499499
catch (e) {
500-
console.log('An error occurred while minifying. The result will not be minified.');
500+
console.log('An error occurred while minifying. The result will not be minified.');
501501
}
502502
}
503503

504+
if (map) {
505+
assets[`${filename}.map`] = { source: JSON.stringify(map), permissions: defaultPermissions };
506+
}
507+
504508
if (v8cache) {
505509
const { Script } = require('vm');
506510
assets[`${filename}.cache`] = { source: new Script(code).createCachedData(), permissions: defaultPermissions };
507511
assets[`${filename}.cache${ext}`] = { source: code, permissions: defaultPermissions };
508-
if (map) {
509-
assets[filename + '.map'] = { source: JSON.stringify(map), permissions: defaultPermissions };
510-
map = undefined;
511-
}
512512
const columnOffset = -'(function (exports, require, module, __filename, __dirname) { '.length;
513513
code =
514514
`const { readFileSync, writeFileSync } = require('fs'), { Script } = require('vm'), { wrap } = require('module');\n` +

test/unit.test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ for (const unitTest of fs.readdirSync(`${__dirname}/unit`)) {
5151
expect(assets['pi-bridge.js']).toBeDefined();
5252
expect(assets['pi-bridge.js'].source.toString()).toContain('Math.PI');
5353
}
54+
if (unitTest.includes('sourcemap-register')) {
55+
expect(assets['sourcemap-register.js']).toBeDefined()
56+
expect(assets['sourcemap-register.js'].source.toString()).toEqual(fs.readFileSync(__dirname + '/../src/sourcemap-register.js.cache.js').toString())
57+
}
58+
if (unitTest.includes('minify') && !unitTest.includes('minify-err')) {
59+
expect(assets['index.js.map']).toBeDefined()
60+
}
5461
const actual = code
5562
.trim()
5663
// Windows support
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const foobar = 'qux'
2+
console.log?.("hello");
3+
exports.foobar = foobar
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"minify": true,
3+
"sourceMap": true,
4+
"sourceMapRegister": true
5+
}

test/unit/minify-sourcemap-register/output.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/unit/minify-sourcemap-register/output.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const foobar = 'qux'
2+
console.log("hello");
3+
exports.foobar = foobar
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"minify": true,
3+
"sourceMap": true,
4+
"sourceMapRegister": true,
5+
"v8cache": true
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require('./sourcemap-register.js');const { readFileSync, writeFileSync } = require('fs'), { Script } = require('vm'), { wrap } = require('module');
2+
const basename = __dirname + '/index.js';
3+
const source = readFileSync(basename + '.cache.js', 'utf-8');
4+
const cachedData = !process.pkg && require('process').platform !== 'win32' && readFileSync(basename + '.cache');
5+
const scriptOpts = { filename: basename + '.cache.js', columnOffset: -62 }
6+
const script = new Script(wrap(source), cachedData ? Object.assign({ cachedData }, scriptOpts) : scriptOpts);
7+
(script.runInThisContext())(exports, require, module, __filename, __dirname);
8+
if (cachedData) process.on('exit', () => { try { writeFileSync(basename + '.cache', script.createCachedData()); } catch(e) {} });

test/unit/minify-v8cache-sourcemap-register/output.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)