我正在用TypeScript编写一个UI页面对象模型测试项目,我正在尽力避免可怕的嵌套导入。
我在.ts
文件中找到了修复问题的.tsconfig
文件的paths
对象,但是,由于我编译成outDir
,我编译的.js
文件无法解析模块路径。
我在model
目录中开发并编译成src
目录。
我已经设置了我的.tsconfig
文件,如下所示
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"outDir": "src/",
"baseUrl": "./model/",
"paths": {
"general.utils": [ "lib/general/general.utils" ],
"pretest.setup": [ "lib/pretest.setup/pretest.setup" ],
"tpapi": [ "lib/tpapi/tpapi" ],
"*": [ "*" ]
}
},
"exclude": [
"node_modules"
],
"compileOnSave": false
}
这种paths
允许我
import { chooseRandomValueFrom } from 'general.utils';
从 model
中.ts
文件中解析,但不会在 src
中的.js
文件中解析。
这是一个使用 npm test
运行的npm
类型项目。该命令执行一个脚本,该脚本编译、运行测试并删除src
目录。
#!/bin/bash
npm run compile:ts
node_modules/webdriverio/bin/wdio
npm run clean:ts
我发现处理此问题的最佳方法是拥有一个收集器/导出器文件,该文件从它收集的文件中导出所有内容。
例如,如果我有 5 个文件中有不同类型的实用程序,我会适当地命名它们,然后将它们全部收集到一个名为 utilities
的收集器/导出器文件中。
在utilities
文件中,它只是看起来像
export * from 'path/to/file1
export * from 'path/to/file2
export * from 'path/to/file3
然后我只能从收集器/导出器文件导入。
这不是很好,但总比什么都不做要好一点。