切换到ES2015并使用ts节点时模块地狱

时间:2018-06-07 18:34:33

标签: typescript mocha ts-node

我已经意识到我的库项目最好是使用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中遇到错误:

enter image description here

所以从本质上看,似乎正在编译以下ES格式的文件:

  • 我的测试脚本test-spec.ts
  • 我的源文件src/my-file.ts

但我的源文件依赖项如" lodash-es"在ES2015中没有被翻译。我有什么方法可以解决这个问题吗?

更新

我发现这篇文章非常有用:Tree shake Lodash with Webpack, Jest and Typescript

虽然该示例使用的是Jest,但我相信Mocha的行为方式与描述的相同。我不知道的是......有没有办法让Mocha像Jest一样配置在本文中。

0 个答案:

没有答案