mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
register: compress sourcemap storage (#1065)
This commit is contained in:
1 parent
594a25ace1
commit
6507495d36
1 file changed
+33
-11
+33
-11
@@ -1,16 +1,33 @@
|
|||||||
/* eslint-disable node/no-deprecated-api */
|
/* eslint-disable node/no-deprecated-api */
|
||||||
const map = {};
|
const zlib = require('zlib');
|
||||||
|
const sourceMapArg = process.env.LOADER_SOURCEMAP_ONLY
|
||||||
|
|| process.argv.find((i) => i.startsWith('--sourcemap-only='))
|
||||||
|
|| '';
|
||||||
|
const sourceMapOnly = sourceMapArg ? sourceMapArg.split('=')[1].split(',').filter((i) => i) : false;
|
||||||
|
const map = new Proxy(Object.create(null), {
|
||||||
|
get(target, key) {
|
||||||
|
if (!target[key]) return null;
|
||||||
|
return zlib.inflateSync(target[key]).toString();
|
||||||
|
},
|
||||||
|
set(target, key, value) {
|
||||||
|
if (typeof value !== 'string') return false;
|
||||||
|
if (sourceMapOnly && key.includes('node_modules') && !sourceMapOnly.some((entry) => key.includes(entry))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
target[key] = zlib.deflateSync(value, { level: 9 });
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
});
|
||||||
require('source-map-support').install({
|
require('source-map-support').install({
|
||||||
handleUncaughtExceptions: false,
|
handleUncaughtExceptions: false,
|
||||||
environment: 'node',
|
environment: 'node',
|
||||||
retrieveSourceMap(file) {
|
retrieveSourceMap(file) {
|
||||||
if (map[file]) {
|
const data = map[file];
|
||||||
return {
|
if (!data) return null;
|
||||||
url: file,
|
return {
|
||||||
map: map[file],
|
url: file,
|
||||||
};
|
map: data,
|
||||||
}
|
};
|
||||||
return null;
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
@@ -18,9 +35,13 @@ const vm = require('vm');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const esbuild = require('esbuild');
|
const esbuild = require('esbuild');
|
||||||
|
|
||||||
process.env.NODE_APP_INSTANCE ||= '0';
|
|
||||||
const major = +process.version.split('.')[0].split('v')[1];
|
const major = +process.version.split('.')[0].split('v')[1];
|
||||||
const minor = +process.version.split('.')[1];
|
const minor = +process.version.split('.')[1];
|
||||||
|
if (major < 18) {
|
||||||
|
console.error('NodeJS <18 is no longer supported');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
process.env.NODE_APP_INSTANCE ||= '0';
|
||||||
|
|
||||||
const remove = [
|
const remove = [
|
||||||
// by esbuild
|
// by esbuild
|
||||||
@@ -70,12 +91,13 @@ require.extensions['.js'] = function loader(module, filename) {
|
|||||||
return module._compile(transform(filename), filename);
|
return module._compile(transform(filename), filename);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const content = fs.readFileSync(filename, 'utf-8');
|
let content = fs.readFileSync(filename, 'utf-8');
|
||||||
const lastLine = content.trim().split('\n').pop();
|
const lastLine = content.trim().split('\n').pop();
|
||||||
if (lastLine.startsWith('//# sourceMappingURL=data:application/json;base64,')) {
|
if (lastLine.startsWith('//# sourceMappingURL=data:application/json;base64,')) {
|
||||||
const info = lastLine.split('//# sourceMappingURL=data:application/json;base64,')[1];
|
const info = lastLine.split('//# sourceMappingURL=data:application/json;base64,')[1];
|
||||||
const payload = JSON.parse(Buffer.from(info, 'base64').toString());
|
const payload = Buffer.from(info, 'base64').toString();
|
||||||
map[filename] = payload;
|
map[filename] = payload;
|
||||||
|
content = content.split('//# sourceMappingURL')[0];
|
||||||
}
|
}
|
||||||
return module._compile(content, filename);
|
return module._compile(content, filename);
|
||||||
} catch (e) { // ESM
|
} catch (e) { // ESM
|
||||||
|
|||||||
Reference in new issue
Block a user