8

对于我的库项目,我已经意识到最好使用 TypeScript 转换为 ES2015 格式,然后bili将其转换为其他格式(也称为 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"]
}

这可以满足我的转换所需,但多年来我一直很享受通过以下方式运行的 mocha 测试ts-node

ts-node --require ts-node/register 'test/**/*-spec.ts'

我很快意识到我所有基于 TS 的测试脚本现在都由于使用了import语句等而崩溃,但我能够通过添加以下内容来解决这个问题:

TS_NODE_PROJECT="tsconfig.test.json" ts-node --require 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"]
}

lodash这确实在一定程度上推动了事情的发展,因为我的测试文件——它们是 TypeScript 文件——现在确实运行了,但是当我从切换到(希望是显而易见的原因)时一切都不好lodash-es,现在我在 lodash-es 中遇到错误:

在此处输入图像描述

所以从本质上讲,似乎正在转换以下 ES 格式的文件:

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

但是我的源文件依赖项(例如 ES2015 中的“lodash-es”)没有被转译。我有什么办法可以解决这个问题吗?


更新

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

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

4

0 回答 0