我应该编译我的 React Hook 库,还是只发布 ES6 代码?

Should I compile my react hook library, or publish only the ES6 code?

我有一个非常简单的钩子,我想将它发布到 npm,我正在努力了解为什么我应该编译我的钩子。让我先提供一些背景信息。

我的钩子只依赖于 React.useStateReact.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 tool, and tried it out, but I don't see how the included dev-dependencies are needed for my project. My hook is already usable in my mono-repo, where I added a folder, react-test-ground/, in which I provide a working app that I bootstrapped using CRA

关于测试:

如果这样做有意义,我可以执行额外的步骤,专门为此挂钩添加单元测试,但目前,我看不到对此有强烈的需求,因为功能的核心是simple-shared-state,并且所有这些逻辑都已经包含了相当广泛的测试。

我看了react-hooks-testing-library,根据"When to use this library"和"When not to use this library",在我看来,我的情况是不需要使用这个图书馆。我认为我的钩子很简单,以至于很难证明添加更多测试的额外步骤是合理的。你同意?你能想出我 应该 使用 react-hooks-testing-library 的原因吗?

关于编译:

我看不出编译和缩小我的钩子的充分理由,因为 React 应用程序开发人员几乎只会从 JSX 编译他们的项目。

总结

考虑到以上所有情况,除了简单地在 npm 上完全如图所示发布我的钩子之外,还有什么理由要做吗?意思是,package.json 将包含 "main": "src/index.js",而不包含 dist/ 目录。 React 将进入 peerDependencies 下的 package.json,仅此而已。应用程序开发人员只需将此钩子的源 ES6 代码编译到他们的包中,仅此而已。

提前感谢您抽出宝贵时间阅读和回复!

您可以发布 ES6 代码。

当前的js规范是ES2020。所有运行时都应支持此规范中的所有功能。 因此,您需要将自己的代码编译为最新标准。如果用户想在较旧的运行时(例如 IE11)上使用您的代码,他可以在他的构建过程中转换所有代码。