Reactjs 如何将用Typescript编写的自定义React钩子发布到npm?

Reactjs 如何将用Typescript编写的自定义React钩子发布到npm?,reactjs,typescript,npm,react-hooks,Reactjs,Typescript,Npm,React Hooks,我已经在Typescript中编写了一个React钩子,并希望将其发布到npm,但我似乎无法获得正确的构建配置。除了tsc,我没有使用任何其他构建工具。我已经阅读了Typescript文档、React文档和一些博客文章中的建议 我在构建和发布时没有收到任何错误,但是当我尝试在另一个项目中导入模块时,我在导入时收到一个错误。然而,我所准备的一切都表明,在发布自定义挂钩时,react应该是一个peerDependency 无法从“../useMyHook/build/index.js”中找到模块“r

我已经在Typescript中编写了一个React钩子,并希望将其发布到npm,但我似乎无法获得正确的构建配置。除了
tsc
,我没有使用任何其他构建工具。我已经阅读了Typescript文档、React文档和一些博客文章中的建议

我在构建和发布时没有收到任何错误,但是当我尝试在另一个项目中导入模块时,我在导入时收到一个错误。然而,我所准备的一切都表明,在发布自定义挂钩时,
react
应该是一个
peerDependency

无法从“../useMyHook/build/index.js”中找到模块“react”

  • tsc:
    v4.1.3
  • 反应:
    v16.14.0
回购:

tsconfig.json

{
“编译器选项”:{
“allowSyntheticDefaultImports”:true,
“宣言”:正确,
“esModuleInterop”:正确,
“模块”:“esnext”,
“moduleResolution”:“节点”,
“严格”:是的,
“目标”:“es5”,
“outDir”:“../build”
},
“包括”:[“src”],
“排除”:[“节点模块”、“***/\uuuuuu测试”]
}
package.json(缩写):

{
“名称”:“useMyHook”,
“版本”:“0.1.0”,
“文件”:[
“生成/***”
],
“主”:“构建”,
“脚本”:{
“构建”:“tsc”,
“准备”:“npm运行生成”
},
“对等关系”:{
“反应”:“>=16.0.0”,
“类型脚本”:“>=4.1.0”
},
“依赖性”:{
“@types/node”:“^14.14.21”,
@types/react:“^17.0.0”
}
}
索引.ts(缩写):

从'react'导入{useState}
const useMyHook=()=>{
常数[x,setX]=useState(0)
返回{
onClick:()=>{
console.log(x)
}
}
}
导出默认useMyHook

您的
构建
文件夹的内容是否包含您期望的所有内容?.d.ts和.js文件的组合?您可能需要在tsconfig中包含
“noEmit”:false
,但我不确定。签出我的repo,我使用的是typescript及其在npm上的react包,希望代码库能提供一些想法。@LindaPaiste:Build文件夹包含
index.js
index.d.ts
。不幸的是
“noEmit”:false
没有帮助。@BARNOWL:谢谢,但您的回购是一个组件,而不是挂钩。它包括作为依赖项的
react
,因此它不会遇到与作为
peerDependency
发布
react
相同的错误。在我的情况下,我可以从另一个react项目导入您的npm包,而不会遇到任何问题。