首页 > 解决方案 > 如何制作通用的 JavaScript / TypeScript 库

问题描述

我喜欢编写小而简单的 TypeScript 库,我可以在我的项目中共享它们,并且我想与更广泛的开源社区共享它们。但一个问题是让我退缩:

我经常会遇到我发布的 NPM 模块在一个上下文中工作但在其他上下文中出现奇怪错误的情况。例如,它在 create-react-app中有效,但在 ts-node中无效。或者它在任何地方都可以工作,但它会在构建中产生问题。尽管它只是一个纯函数,不使用像window这样的上下文相关的东西。

如何预防这些类型的问题?

是否有一些“神奇”的方法可以让它在每个可能的上下文和组合中工作(和测试)它,比如浏览器、没有 ES6 的旧浏览器、打字稿项目、create-react-app 项目、节点、ts-node、ES 模块、导入需要,导入导入,部分导入......?

我正在寻找一些统一而简单的方法来编写代码,而不是在没有大量样板代码的情况下花费大部分时间来配置和更新(ts、webpack)配置。例如,一些为我构建每个平台并将其自动配置到 package.json 中的库?一些 create-react-app 但用于库。

标签: typescriptnpmwebpackcreate-react-apptsconfig

解决方案


感谢您为开源社区做出贡献的努力!

在写这篇文章时,我想知道类似的问题如何为前端 JavaScript 设置 ES 模块库,我通过用 JavaScript 编写库来缩小范围,从而采取了捷径。用 TypeScript 编写代码带来的问题很少:

  • JS 可以安全地保持未编译 - 您将代码编写为 ES 模块,编译由客户端应用程序设置
  • 另一方面,在 npm 中发布的 TS 模块应该被编译。这不仅迫使您回答您在这里的问题,而且还需要设置一些基础设施来构建和发布您的代码

如果您有兴趣一起开发此用例,请联系我们。我认为它至少可以被一些代码生成器覆盖,类似于我在如何快速启动 webpack 项目中介绍的内容,但更详细并专注于库。我花了很多时间来弄清楚与 webpack 相关的东西,如果有一个具体的用例和有人来讨论想法,那就太好了。


推荐阅读