如何包含 custom/local Gatsby 插件并在 Netlify 上构建和部署?

How to include a custom/local Gatsby plugin and build and deploy on Netlify?

我有一个使用 Netlify 部署的 Gatsby 生成的网站。

我按照 here 列出的教程以非常相似的方式创建了一个 custom/local 源插件。

自定义插件显然有自己的 package.json 文件,因此需要 npm i 才能在通过根级别导入时正常工作 gatsby-config.js

在我的 Netlify 部署中为我的自定义插件安装依赖项的最简单方法是什么?

最简单,我认为你可以指示 yarn(或 npm)将 cd 放入你的插件文件夹,然后 运行 安装。

在 netlify 中,您可以将默认构建脚本从默认 gatsby build 更改为 yarn build(或 npm 等价物)。

然后,在您的根 package.json 中,在 scripts 中添加:

"install-plugin": "cd ./plugins/your-plugin-name && yarn",
"build": "yarn install-plugin && gatsby build"

当您有多个自定义插件时,这不是最优雅的解决方案;对于这种情况,我认为自定义 post 安装脚本可以工作。


或者,您也可以将插件的所有依赖项直接添加到根目录 package.json!

盖茨比与纱线配合得很好。 Netlify 支持使用纱线,因此您可以使用选项 来设置纱线工作区。

Yarn 工作区具有额外的优势,允许您稍后在准备好使用它们时开始在 Gatsby 中创建主题。 Yarn 将使用配置来维护插件的 node_modules link,就像您使用 npm 安装它一样。以后,您可以随时将您的插件发布到 npm 并将其用作其他站点的模块。

  • 将您的 Gatsby 站点移动到它自己的目录中(例如 gatsby-site
  • Create/move 源插件到它自己的位置(例如 gatsby-source-someplugin
  • 使用yarn workspace gatsby-site add gatsby-source-someplugin为源插件添加对站点的依赖
  • 在项目的根目录下创建一个简单的 package.json,如下所示

package.json

{
  "name": "gatsby-example",
  "version": "0.1.0",
  "private": true,
  "author": "Your Name <your@email.com>",
  "license": "MIT",
  "workspaces": [
    "gatsby-site",
    "gatsby-source-someplugin"
  ]
}
  • 确保 运行 yarn 并在本地构建 yarn.lock 文件并将其推送到您的存储库。它会让 Netlify 知道您正在使用 yarn,并会为您安装和配置 yarn。

注意: 如果有,请确保将 netlify.toml 保留在根位置。同时将部署路径更改为 gatsby-site/public 目录。更改构建命令以使用工作区(即 yarn workspace gatsby-site build)。在本地测试构建命令应该证明一切正常。