Как включить собственный / локальный плагин Gatsby и собрать и развернуть его на Netlify?

У меня есть сайт, созданный Гэтсби, который я развертываю с помощью Netlify.

Я следил за руководством, указанным здесь, чтобы создать пользовательский / плагин с локальным исходным кодом очень похожим образом.

Пользовательский плагин, очевидно, имеет свой собственный package.json файл и, следовательно, требует npm i для того, чтобы все работало при импорте через корневой уровень gatsby-config.js.

Какой самый простой способ получить зависимости для установки моего настраиваемого плагина в моем развертывании Netlify?


person BML91    schedule 27.04.2019    source источник


Ответы (2)


Проще всего, я думаю, вы можете указать yarn (или npm) записать компакт-диск в папку с плагином, а затем запустить install.

В netlify вы можете изменить сценарий сборки по умолчанию с gatsby build по умолчанию на yarn build (или эквивалент npm).

Затем в корневом пакете package.json в scripts добавьте следующее:

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

Это не самое элегантное решение, когда у вас больше, чем несколько настраиваемых плагинов; в этом случае, я думаю, может сработать собственный сценарий пост-установки.


В качестве альтернативы вы также можете добавить все зависимости плагина непосредственно в корневой package.json!

person Derek Nguyen    schedule 28.04.2019
comment
Мне нравится это решение для одного пакета, оно выполняет свою работу без чрезмерного усложнения. - person BML91; 29.04.2019

Гэтсби хорошо работает с пряжей. Netlify поддерживает использование пряжи, поэтому у вас есть возможность настроить рабочие области пряжи.

Рабочие области Yarn имеют дополнительное преимущество, позволяющее вам начать создавать темы в Gatsby позже, когда вы будете готовы их использовать. Yarn будет использовать конфигурацию для поддержки ссылки node_modules для плагина, как если бы вы установили его с помощью npm. Позже вы всегда можете опубликовать свой плагин в npm и использовать его как модуль для других сайтов.

  • Переместите ваш сайт Gatsby в отдельный каталог (например, gatsby-site)
  • Создайте / переместите исходный плагин в его собственное местоположение (например, 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 <[email protected]>",
  "license": "MIT",
  "workspaces": [
    "gatsby-site",
    "gatsby-source-someplugin"
  ]
}
  • Обязательно запустите yarn, создайте свой yarn.lock файл локально и отправьте его в свой репозиторий. Он сообщит Netlify, что вы используете yarn, и установит и настроит yarn для вас.

Примечание.. Не забудьте сохранить netlify.toml в корневом каталоге, если он у вас есть. Также измените путь развертывания на каталог gatsby-site/public. Измените команду сборки, чтобы использовать рабочую область (например, yarn workspace gatsby-site build). Протестируйте команду сборки локально, чтобы убедиться, что все работает.

person talves    schedule 28.04.2019
comment
Я сохраню это для справки, это отличное решение, когда все становится сложнее. - person BML91; 29.04.2019
comment
Ага. Выбранный вами ответ в качестве решения - это не то, что я бы сделал, но он решает ваш вариант использования. Этот ответ предназначен для человека, который будет настраивать полное решение с несколькими плагинами и / или темами. Выбранный ответ быстро усложнится при добавлении других пакетов и создании монорепозитория. Согласен, на этот вопрос есть несколько ответов. - person talves; 29.04.2019