我已经意识到我的库项目最好是使用TypeScript转换为ES2015格式,然后我bili
将其转换为其他格式(aka,UMD和CJS)。这意味着我的主tsconfig.json
是:
{
"compilerOptions": {
"declaration": true,
"module": "es2015",
"target": "es2015",
"lib": ["es2015", "esnext.asynciterable", "es2015.reflect"],
"moduleResolution": "node",
"sourceMap": true,
"noImplicitAny": true,
"outDir": "./lib",
"removeComments": false,
"typeRoots": ["./node_modules/@types"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*-spec.ts"]
}
这就是我需要它来进行转换,但多年来我一直在享受通过ts-node
运行的摩卡测试:
ts-node - 需要ts-node / register' test / ** / * - spec.ts'
我很快意识到我所有基于TS的测试脚本现在都因为使用了 import 语句而失败了,但我能够通过添加以下内容来解决这个问题:
TS_NODE_PROJECT =" tsconfig.test.json" ts-node - 需要ts-node / register' test / ** / * - spec.ts'
替代tsconfig.test.json
的位置是:
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"target": "es5",
"lib": ["es2015"],
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"inlineSourceMap": true
},
"include": ["scripts/**/*.ts"]
}
这确实在一定程度上推进了我的测试文件 - 这是TypeScript文件 - 现在可以运行但是当我从lodash
切换到lodash-es
时,一切都不顺利(希望显而易见)原因)现在我在lodash-es中遇到错误:
所以从本质上看,似乎正在编译以下ES格式的文件:
test-spec.ts
src/my-file.ts
但我的源文件依赖项如" lodash-es"在ES2015中没有被翻译。我有什么方法可以解决这个问题吗?
我发现这篇文章非常有用:Tree shake Lodash with Webpack, Jest and Typescript
虽然该示例使用的是Jest,但我相信Mocha的行为方式与描述的相同。我不知道的是......有没有办法让Mocha像Jest一样配置在本文中。