Как я могу встроить скрипт node_modules в веб-сайт Gatsby?

Я хотел бы встроить весь исходный код модуля UMD https://zizzamia.github.io/perfume/ на веб-сайт Gatsby, как я могу прочитать его из каталога node_modules и поместить в <head> документа?

Поиск всех неиспользуемых файлов в проекте
Поиск всех неиспользуемых файлов в проекте
Количество файлов в проекте растет по мере его развития. И если быть по-настоящему честным, их продвижение происходит в геометрической прогрессии...
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
1
0
477
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я придумал следующее решение:

  • установить сырой загрузчик, загрузчик веб-пакетов для импорта файл в виде строки
npm install raw-loader --save-dev
  • импортировать мой файл в виде строки
import rawPerfume from 'raw-loader!./node_modules/perfume.js/dist/perfume.umd.min.js';
  • Я создал плагин (просто добавьте plugins/<PLUGIN_NAME> в корень проекта), содержащий gatsby-ssr.js файл (взгляните на ССР руководство Гэтсби)
  • затем я установил еще один головной компонент
import React from "react";
export const onRenderBody = ({
  setHeadComponents,
}) => {
  setHeadComponents([
    React.createElement('script', {
      dangerouslySetInnerHTML: {
        __html: rawPerfume.default || rawPerfume
      }
    })
  ]);  
}  

Окончательный код примерно такой (plugins/gatsby-plugin-perfume.js/gatsby-ssr.js файл)

import rawPerfume from 'raw-loader!./node_modules/perfume.js/dist/perfume.umd.min.js';

import React from "react";
export const onRenderBody = ({
  setHeadComponents,
}) => {
  setHeadComponents([
    React.createElement('script', {
      dangerouslySetInnerHTML: {
        __html: rawPerfume.default || rawPerfume
      }
    })
  ]);  
}  

Вы можете увидеть код на плагин gatsby-plugin-perfume.js, которым я тоже поделился

Другие вопросы по теме