1

我已经构建了一个我想用作的 JavaScript/TypeScript 库:

  • 从 JavaScript 和 TypeScript 调用时的全局变量
  • 从 JavaScript 和 TypeScript 调用时通过 RequireJS 访问
  • 具有完整的单元测试覆盖率

这是一个使用 Webpack 打包的 UMD,并在此处作为 NPM 包部署 ( https://www.npmjs.com/~typed-contract )。如果你想要我正在处理的分支的全部源代码,你可以在这里找到它https://github.com/randarp/typed-contract/tree/feature/Issue_5.1

我的问题是我不能让它在所有情况下都工作,我的感觉是包名称中的连字符(即类型化合同)是罪魁祸首。一些例子:

  • 在 TypeScript 中,\Code\TypedContract.Specs\Contract.TypeScript.requireJS.spec.ts
    • 如果我使用import { contract } from "typed-contract"那么我的单元测试会失败,但 WebStorm 转译器说它是正确的。
    • 如果我使用import { contract } from "typedcontract"那么我的单元测试通过,但转译器说 Error:(4, 26) TS2306:File 'C:/Projects/TypedContract/Code/typedcontract.d.ts' is not a模块。
  • 我有一个外部 NodeJS 应用程序来测试它。在这种情况下:
    • 如果我使用import {contract} from 'typed-contract'它会按预期工作
    • 如果我使用import {contract} from 'typedcontract'它不会加载应用程序,因为它在 node_modules 下找不到 NPM 包。

我开始认为我需要弃用这个包并开始一个不带连字符的新包,除非有人可以提供一些关于可能发生的事情的线索,因为我的“排列编程”不起作用。

4

2 回答 2

0

好吧,经过几次失败的尝试,我创建了一个新包并弃用了旧包。现在可以在以下位置找到它:

https://www.npmjs.com/package/typedcontract

我只是无法让它在所有使用连字符的情况下都能正常工作,所以这似乎是最好的长期解决方案。

于 2017-03-17T05:02:06.610 回答
-1

我开始认为我需要弃用这个包并开始一个没有连字符的新包

  • 我应该与-.
  • 不要太相信 WebStorm。TSC 应该是您唯一的事实来源。

然后我的单元测试失败

也许你的单元测试是错误的。

于 2017-03-09T02:50:27.020 回答