Одно приложение для реагирования импортировано в другое приложение для реагирования?
Можно ли импортировать одно приложение React (созданное с использованием create-response-app) в другое совершенно другое приложение React. Все мы импортировали компоненты в наш SPA, но можно ли полностью импортировать другое приложение? Если да, то как?
Кроме того, оба этих реагирующих приложения МОГУТ иметь несколько похожих зависимостей / файлов / библиотек... например, bootstrap / css / Redux store / и т. Д. Также с возможностью использования нескольких распространенных редукторов. Этим общим редукторам может потребоваться взаимодействие / прослушивание действий между этими двумя реагирующими приложениями.
Допустим, у нас есть:
ReactDOM.render(<Provider store={store}><MainApp /></Provider>, document.getElementById('root'));
Могу ли я добавить еще одно подобное приложение (которое НЕ было встроено в это) и нацелить еще один кивок в дом???
ReactDOM.render(<Provider store={store}><ExternalAPP /></Provider>, document.getElementById('root22'));
Делалось ли это когда-нибудь раньше? React сжимает все наши компоненты в "куски", которые в основном представляют собой файлы js.
Спасибо за любые советы / предложения / подсказки
2 ответа
Вы можете использовать npm pack
команда.
Он создает файл tarball (.tgz) из вашего текущего приложения. Затем переместите этот файл в другую папку приложения, затем запустите:
npm install app1
(при условии, что app1 - ваше первое имя приложения).
После его установки вы можете увидеть свои файлы app1 внутри node_modules/App1/
. Теперь вы можете импортировать нужные файлы или компоненты и использовать их в других приложениях.
Надеюсь это поможет.
Также проверьте это: https://docs.npmjs.com/cli-commands/pack.html
Один из способов, который сработал для меня, — перенести CRA на Github иnpm install
это как зависимость. Я настоятельно рекомендую вам ознакомиться с этим ресурсом, в котором подробно объясняется, как подготовить компонент React для этого процесса. Следуйте инструкциям в связанном руководстве до № 3, затем перенесите все (включая папку /dist) на Github. Затем сделайтеnpm install org_name/repo_name
и установите его как зависимость во втором приложении React. Затем, чтобы импортировать определенный компонент, вы можете сделать что-то вродеimport { Button } from 'repo_name/dist/index'
или ссылайтесь на любой файл, который вы использовали для экспорта своих компонентов.
Если ссылка не работает, вот шаги в статье:
- Создайте папку под названием
lib
в котором хранятся все компоненты, которые вы хотите добавить в другое реагирующее приложение. Также определите файл с именемindex.js
в этой папке, которая экспортирует эти компоненты. - Создайте репозиторий для компонентов на Github.
- Установите Babel и соберите
dist
папка.(npm install --save-dev @babel/core @babel/cli @babel/preset-env
иnpm install -save @babel/polyfill
) - Добавьте следующий файл конфигурации в папку верхнего уровня вашего проекта:
{
"presets": [
[
"@babel/env",
{
"targets": {
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1"
},
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
],
"@babel/preset-react"
]
}
- В package.json замените скрипт сборки следующим:
"build": "rm -rf dist && NODE_ENV=production babel src/lib --out-dir dist --copy-files";
- Запустите команду
npm run build