我应该编译我的 React Hook 库,还是只发布 ES6 代码?
Should I compile my react hook library, or publish only the ES6 code?
我有一个非常简单的钩子,我想将它发布到 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 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)上使用您的代码,他可以在他的构建过程中转换所有代码。
我有一个非常简单的钩子,我想将它发布到 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 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)上使用您的代码,他可以在他的构建过程中转换所有代码。