|
|
|
@ -118,36 +118,40 @@ const bundle = await bundle_code(
|
|
|
|
|
).js.code
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!bundle.includes('hydrate_node') && !bundle.includes('hydrate_next')) {
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`✅ Hydration code treeshakeable`);
|
|
|
|
|
} else {
|
|
|
|
|
failed = true;
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`❌ Hydration code not treeshakeable`);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* @param {string} case_name
|
|
|
|
|
* @param {string[]} strings
|
|
|
|
|
*/
|
|
|
|
|
function check_bundle(case_name, ...strings) {
|
|
|
|
|
for (const string of strings) {
|
|
|
|
|
const index = bundle.indexOf(string);
|
|
|
|
|
if (index >= 0) {
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`❌ ${case_name} not treeshakeable`);
|
|
|
|
|
failed = true;
|
|
|
|
|
|
|
|
|
|
if (!bundle.includes('component_context.l')) {
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`✅ Legacy code treeshakeable`);
|
|
|
|
|
} else {
|
|
|
|
|
failed = true;
|
|
|
|
|
let lines = bundle.slice(index - 500, index + 500).split('\n');
|
|
|
|
|
const target_line = lines.findIndex((line) => line.includes(string));
|
|
|
|
|
// mark the failed line
|
|
|
|
|
lines = lines
|
|
|
|
|
.map((line, i) => (i === target_line ? `> ${line}` : `| ${line}`))
|
|
|
|
|
.slice(target_line - 5, target_line + 6);
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error('The first failed line:\n' + lines.join('\n'));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`❌ Legacy code not treeshakeable`);
|
|
|
|
|
console.error(`✅ ${case_name} treeshakeable`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!bundle.includes(`'CreatedAt'`)) {
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`✅ $inspect.trace code treeshakeable`);
|
|
|
|
|
} else {
|
|
|
|
|
failed = true;
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(`❌ $inspect.trace code not treeshakeable`);
|
|
|
|
|
}
|
|
|
|
|
check_bundle('Hydration code', 'hydrate_node', 'hydrate_next');
|
|
|
|
|
check_bundle('Legacy code', 'component_context.l');
|
|
|
|
|
check_bundle('$inspect.trace', `'CreatedAt'`);
|
|
|
|
|
|
|
|
|
|
if (failed) {
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
console.error(bundle);
|
|
|
|
|
console.error('Full bundle at', path.resolve('scripts/_bundle.js'));
|
|
|
|
|
fs.writeFileSync('scripts/_bundle.js', bundle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|