core: check yarn npm_execpath

This commit is contained in:
undefined committed 2024-06-07 07:12:38 +08:00
1 parent 59c1b83b50
commit a06b9bfce7
1 file changed
+19 -10
+19 -10
View File
@@ -35,18 +35,27 @@ const { bypass } = hook(/^(hydrooj|@hydrooj|cordis|lodash|js-yaml)($|\/)/, (id)
});
}, { ignoreModuleNotFoundError: false });
// Replace pnpm paths.
Error.stackTraceLimit = 50;
// Replace pnp paths.
// Vscode will try to open a local file for links, so this doesn't work for remote-ssh, etc.
if (process.env.npm_execpath && process.env.npm_execpath.includes('pnpm') && !process.env.SSH_CONNECTION) {
if (process.env.npm_execpath && !process.env.SSH_CONNECTION) {
const original = Error.prepareStackTrace;
Error.prepareStackTrace = function capture(...args) {
const res = original.apply(this, args);
if (!res.includes('.pnpm')) return res;
return res.replace(
/([( ])([^( ]+\/\.pnpm\/.+?\/node_modules\/)(.+)(:\d+:[^)\n]+)/g,
'$1\u001B]8;;$2$3$4\u0007pnpm:$3$4\u001B]8;;\u0007',
);
};
if (process.env.npm_execpath.includes('yarn')) {
Error.prepareStackTrace = function capture(...args) {
return original.apply(this, args).split('\n').filter((i) => !i.includes('.pnp')).join('\n');
};
}
if (process.env.npm_execpath.includes('pnpm')) {
Error.prepareStackTrace = function capture(...args) {
const res = original.apply(this, args);
if (!res.includes('.pnpm')) return res;
return res.replace(
/([( ])([^( ]+\/\.pnpm\/.+?\/node_modules\/)(.+)(:\d+:[^)\n]+)/g,
'$1\u001B]8;;$2$3$4\u0007pnpm:$3$4\u001B]8;;\u0007',
);
};
}
}
require('./commands');