能否记录Node/Express项目中文件的执行顺序?
批量追踪TypeScript文件的执行顺序
不用手动给每个文件加日志,推荐以下几种批量方案:
方案1:Node.js 自定义加载器(Node环境直接运行TS)
创建加载器文件 trace-loader.mjs:
let count = 0; export async function load(url, context, defaultLoad) { // 只追踪src目录下的TS文件 if (url.includes('src/') && url.endsWith('.ts')) { const filePath = new URL(url).pathname.replace(process.cwd(), ''); console.log(`-> ${++count}. ${filePath}`); } return defaultLoad(url, context, defaultLoad); }
运行时启用加载器:
node --experimental-loader ./trace-loader.mjs src/index.ts
如果使用ts-node,命令调整为:
ts-node --experimental-loader ./trace-loader.mjs src/index.ts
方案2:Vite 插件(前端Vite项目)
修改vite.config.ts,添加自定义插件自动注入日志:
import { defineConfig } from 'vite'; let count = 0; export default defineConfig({ plugins: [ { name: 'trace-file-execution', transform(code, id) { if (id.includes('src/') && id.endsWith('.ts')) { const filePath = id.replace(process.cwd(), ''); // 在文件开头插入日志代码 return `console.log('-> ${++count}. ${filePath}');\n${code}`; } return code; } } ] });
之后正常执行npm run dev,控制台会自动按顺序输出文件加载日志。
方案3:Webpack 插件(前端Webpack项目)
修改webpack.config.js,添加插件批量注入日志:
module.exports = { // 其他配置... plugins: [ { apply(compiler) { let count = 0; compiler.hooks.compilation.tap('TraceFileExecution', (compilation) => { compilation.hooks.processAssets.tap( { name: 'TraceFileExecution', stage: compilation.PROCESS_ASSETS_STAGE_ADDITIONS }, (assets) => { Object.keys(assets).forEach(assetPath => { if (assetPath.startsWith('src/') && assetPath.endsWith('.ts')) { const source = assets[assetPath].source(); const tracedSource = `console.log('-> ${++count}. ${assetPath}');\n${source}`; assets[assetPath] = { source: () => tracedSource, size: () => tracedSource.length }; } }); } ); }); } } ] };
执行npm run dev后,控制台会按文件执行顺序输出日志。
内容的提问来源于stack exchange,提问作者Nima
相关产品推荐
相关产品推荐

