我正在尝试为爱好项目创建一个框架,在该框架中我可以在自己的Typescript文件中分别拥有任意数量的对象定义。然后,我有了一个工厂,该工厂可在需要时根据这些定义创建实体。
例如,通过调用createEntity('Player')
,工厂将使用名为Player
的定义来创建新实体。
由于项目中可能有大量这些定义文件,因此我不想手动将它们全部导入到factory模块中。由于我使用的是Webpack,因此我认为应该可以找到与.entity.ts
之类的glob匹配的所有文件,并将它们导入到工厂模块在编译期间。但是,我不太确定该怎么做。
我发现了一些有关context api的提及,这些提及似乎可以满足我的需要,但是从示例中我看不出如何在工厂模块中实际使用它。 TSC还抱怨说,当我在模块中放入以下行时,找不到名称require
:
function importAll(r) {
r.keys().forEach(r);
}
importAll(require.context('.', true, /\.entity\.ts/));
那么,如何在不手动编写导入文件的情况下,将所有定义文件都包含到Webpack捆绑包中并将其导入到工厂模块中呢?
答案 0 :(得分:0)
找到了解决方案。首先,我必须安装软件包@types/webpack-env
和@types/node
作为开发依赖项。
然后在我的工厂模块中的以下代码选择并导入我的定义:
function importAll(r) {
return r.keys().map(r);
}
const knownEntities = importAll(require.context('../..', true, /\.entity\.ts$/));