我最近一直在尝试使用外部程序包构建我的gatsby(反应)站点。 该软件包的链接为“ https://github.com/transitive-bullshit/react-particle-animation”。
由于我只能选择从组件详细信息更改道具,因此我无法读取/写入最终将所有文件放在一起的软件包文件,因为它不包含在“ gatsby-build”的公用文件夹中。
我尝试过的事情:
作为我从对该问题的评论中找到的解决方案,我们可以使用"Patch-Package"将修补程序保存到节点模块,然后在需要的地方使用它。 这实际上对我有用!
要解释我如何解决它:(由于大多数内容已经写在“补丁程序包DOCS”中,所以要提一下要点:
答案 0 :(得分:1)
在Gatsby中处理使用window
的第三方模块时,您需要向其自己的Webpack配置中添加null
加载程序,以避免在SSR(服务器端渲染)期间进行编译。这是因为gatsby develop
发生在浏览器中,而gatsby build
发生在显然没有window
or other global objects的节点服务器中。
exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
if (stage === "build-html") {
actions.setWebpackConfig({
module: {
rules: [
{
test: /react-particle-animation/,
use: loaders.null(),
},
],
},
})
}
}
请记住,test
值是一个正则表达式,它将与node_modules
下的文件夹匹配,因此,请确保/react-particle-animation/
是正确的名称。
使用patch-package可能有效,但请记住,您要添加另一个软件包,另一个捆绑的文件,这可能会对性能产生影响。提议的代码段是内置的解决方案,会在您构建应用程序时发生。