在index.ts中动态获取modules下报有.ts文件,然后再集中在一起
时间: 2024-09-29 11:05:38 浏览: 35
在TypeScript项目中,要在`index.ts`文件中动态获取`modules`目录及其下所有`.ts`文件,你可以使用递归函数和`import.meta.glob`或者`fs`模块的遍历功能。这里是两种方法的示例:
### 使用`import.meta.glob`
如果你的项目是基于ES6模块并且在支持`import.meta.glob`的环境中,例如现代浏览器或者使用Webpack等工具处理的Node.js项目:
```typescript
// index.ts
async function loadModules(directory: string): Promise<void> {
const moduleFiles = await import.meta.glob(`${directory}/**/*.{ts}`);
for (const file of moduleFiles) {
try {
await import(file);
console.log(`Loaded module: ${file}`);
} catch (err) {
console.error(`Failed to load module: ${file}`, err);
}
}
}
loadModules('modules');
```
这会查找指定目录及子目录中的所有`.ts`文件并尝试导入。
### 使用Node.js `fs`模块
如果你的应用是纯Node.js项目,可以使用`fs`模块和同步版本的`glob`库:
```javascript
// index.js
const fs = require('fs');
const glob = require('fast-glob');
const path = require('path');
function loadModules(directory) {
glob(`${directory}/*.ts`, { sync: true }, (err, files) => {
if (err) throw err;
files.forEach(file => {
try {
require(path.resolve(directory, file));
console.log(`Loaded module: ${file}`);
} catch (err) {
console.error(`Failed to load module: ${file}`, err);
}
});
});
}
loadModules('modules');
```
这两种方法都会按需加载并执行每个`.ts`文件内的内容。当你在`index.ts`或`index.js`中调用这些函数时,它们会自动将所有模块集中在一起执行。
阅读全文
相关推荐


















