我有一组使用类似结构在我的个人项目中重复使用的包。
\n出于生产目的,它们是用TypeScripttsc编写的,并在发布到 npm 之前编译成 JavaScript ,以便我可以将它们安装在我的其他项目中。我还使用Jasmine对它们进行测试。
在开发中,我使用Webpack及其ts-loader来编译 TypeScript,这样我就可以在浏览器中运行的示例脚本中使用它。我通常还在我使用这些包的项目中使用 Webpack,尽管它们是在发布之前编译的,这些项目将仅将它们视为 JavaScript 并且不需要使用ts-loader.
我在任何地方都使用ES 模块语法,因此我可以在每个上下文中轻松地使用相同的语法,而不必担心在 Node 的 CommonJS 和浏览器的 ES 模块语法之间切换。为了在 Jasmine 中允许这样做,jasmine.json我在我的配置文件中设置了"jsLoader": "import".
我在如何撰写陈述方面遇到了问题import。特别是,如何以适用于我开发这些包时出现的每个用例的方式指定文件扩展名。
TypeScript 的 Node 模块解析对文件扩展名做出了一些有用的假设:
\n\n\nTypeScript 将模仿 Node.js 运行时解析策略,以便在编译时找到模块的定义文件。为了实现这一点,TypeScript 将 TypeScript 源文件扩展名(.ts、.tsx 和 .d.ts)覆盖在 Node\xe2\x80\x99s 解析逻辑上。
\n
这意味着如果我使用诸如 TypeScript 之类的代码,import { foo } …