我有一个非常简单的钩子,我想发布到 npm,我正在努力理解为什么我应该编译我的钩子。让我首先提供一些背景。
我的钩子只取决于React.useState
和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 工具并尝试了一下,但我不明白我的项目如何需要包含的开发依赖项。我的钩子已经可以在我的单存储库中使用,我在其中添加了一个文件夹,react-test-ground/
,我在其中提供了一个使用 CRA 引导的工作应用程序。
关于测试:
如果这样做有意义,我可以采取额外的步骤,专门为这个钩子添加单元测试,但目前,我看不到对此的强烈需求,因为功能的核心是simple-shared-state
,所有这些逻辑已经涵盖了相当广泛的测试。
我看了一下 react-hooks-testing-library,根据"何时使用此库"和"何时不使用此库",在我看来,我的情况是我不需要使用这个库。我认为我的钩子很简单,以至于添加更多测试的额外步骤很难证明是合理的。你同意吗?你能想到我应该使用react-hooks-testing-library
的理由吗?
关于汇编:
我看不出编译和缩小我的钩子的充分理由,因为无论如何,反应应用程序开发人员几乎只会从 JSX 编译他们的项目。
总结
鉴于上述所有内容,除了简单地在 npm 上发布我的钩子(如图所示(之外,还有什么理由做更多的事情吗?这意味着,package.json
将包括"main": "src/index.js"
,并且没有dist/
目录。React 会在peerDependencies
下进入package.json
,仅此而已。应用程序开发人员只需将此钩子的源代码 ES6 代码编译到他们的捆绑包中,仅此而已。
提前感谢您抽出宝贵时间阅读和回复!
您可以发布 ES6 代码。
当前的 js 规范是 ES2020。所有运行时都应支持此规范中的所有功能。 因此,您需要将自己的代码编译为最新标准。如果用户想在较旧的运行时(例如IE11(上使用您的代码,他可以在构建过程中转译所有代码。