我已经构建了一个我想用作的 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 包。
我开始认为我需要弃用这个包并开始一个不带连字符的新包,除非有人可以提供一些关于可能发生的事情的线索,因为我的“排列编程”不起作用。