react-hooks - 我应该编译我的反应钩子库,还是只发布 ES6 代码?
问题描述
我有一个非常简单的钩子,我想将它发布到 npm,但我很难理解为什么我应该编译我的钩子。让我首先提供一些背景信息。
我的钩子只依赖于React.useState
and React.useEffect
。这个钩子的目的是与我现有的库一起使用:https ://npmjs.com/package/simple-shared-state 。如您所见,这个钩子几乎没有:
import { useEffect, useState } from "react";
export default (store, selectors) => {
const [state, setState] = useState([]);
useEffect(() => {
const unwatch = store.watchBatch(selectors, (array) => {
setState(array.slice());
});
return unwatch;
}, []);
return state;
};
我查看了create-react-hook
cli 工具并进行了尝试,但我看不到我的项目需要包含的开发依赖项。我的钩子已经可以在我的 mono-repo 中使用,我在其中添加了一个文件夹,react-test-ground/
我在其中提供了一个我使用 CRA 引导的工作应用程序。
关于测试:
如果这样做有意义,我可以采取额外的步骤,专门为此钩子添加单元测试,但目前,我看不到对此的强烈需求,因为功能的核心是 in simple-shared-state
,所有这些逻辑已经涵盖了相当广泛的测试。
我看了react-hooks-testing-library,并基于“何时使用此库”和“何时不使用此库”,在我看来,我的情况是我不需要使用这个库。我认为我的钩子很简单,以至于很难证明添加更多测试的额外步骤是合理的。你同意?你能想出我应该使用的理由react-hooks-testing-library
吗?
关于编译:
我看不出编译和缩小我的钩子的充分理由,因为无论如何,React 应用程序开发人员几乎都将完全从 JSX 编译他们的项目。
概括
鉴于上述所有情况,除了简单地在 npm 上发布我的钩子(如图所示)之外,还有什么理由做更多的事情吗?意思是,package.json
将包括"main": "src/index.js"
,并且没有dist/
目录。React 将进入package.json
under peerDependencies
,仅此而已。应用程序开发人员只需将这个钩子的源 ES6 代码编译到他们的包中,仅此而已。
提前感谢您抽出宝贵时间阅读和回复!
解决方案
你可以发布 ES6 代码。
当前的 js 规范是 ES2020。所有运行时都应支持此规范中的所有功能。因此,您需要将自己的代码编译为最新标准。如果用户想在较旧的运行时(例如 IE11)上使用您的代码,他可以在他的构建过程中转译所有代码。
推荐阅读
- image - 在 blazor 中绘制 SVG 矩形的问题
- c - 编译返回“警告:来自不兼容的指针类型的赋值”
- excel - 条件格式化VBA
- typescript - Typed Promise changes return type to unknown when `finally` is added
- python-3.x - 在追加到列表时避免在 python 中重叠元组
- flutter - Flutter close Splash on api 成功
- django - Django Admin 覆盖 autocomplete_field 中的 __str__ 方法
- html - 如何验证 laravel 中的空数组选择框?
- azure - Key Vault 使用应用服务的 ManagedIdentityCredential 返回 401 (Azure.Identity 1.3.0)
- python-3.x - 为什么不能将类属性作为参数直接分配给类括号,而不是使用 def __init__ 方法?