Создание расширения Chrome с приложением React, созданным с использованием TypeScript и связанным с Webpack, — отличный способ создания современных расширений для браузера. В этом блоге я проведу вас через процесс создания расширения Chrome с использованием шаблона npx create-react-app
с TypeScript и связывания приложения с помощью Webpack. Мы также будем использовать последнюю версию манифеста расширения Chrome, Manifest V3.
Репозиторий GitHub
Чувствуете нетерпение? Направляйтесь прямо к репозиторию GitHub. Не забудьте поставить звезду, если она вам помогла.
Необходимо
Прежде чем мы углубимся в процесс разработки, вам необходимо иметь общее представление о React и его основных концепциях. Вы также должны иметь базовые знания JavaScript и HTML.
Кроме того, вам понадобятся следующие инструменты:
- Гугл Хром
- Visual Studio Code или любой другой редактор кода
- Node.js и npm (менеджер пакетов узлов)
Шаг 1: Создайте приложение React
Для начала нам нужно создать новый проект TypeScript React. Откройте терминал или командную строку и выполните следующую команду. Это создаст новый проект React со всеми необходимыми зависимостями. Перейдите в только что созданную папку проекта:
npx create-react-app react-chrome-ext --template typescript cd react-chrome-ext
Давайте удалим файлы, которые нам не нужны в данный момент. Убедитесь, что структура вашей папки после удаления выглядит примерно так:
Давайте обновим App.tsx, чтобы он стал основным компонентом Hello World в React.
function App() { return ( <div className="App"> Hello World </div> ); } export default App;
Теперь мы обновляем index.tsx, чтобы создать корневой элемент в DOM и добавить в него наше приложение.
import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; const root = document.createElement("div") root.className = "container" document.body.appendChild(root) const rootDiv = ReactDOM.createRoot(root); rootDiv.render( <React.StrictMode> <App /> </React.StrictMode> );
Давайте добавим очень минимальный CSS в App.css:
.App { color: white; text-align: center; } .container { width: 15rem; height: 15rem; background-color: green; }
Шаг 2: Добавьте веб-пакет
Далее нам нужно будет установить необходимые зависимости для объединения нашего приложения React. Выполните следующие команды в своем терминале:
npm install --save-dev webpack webpack-cli copy-webpack-plugin css-loader html-webpack-plugin
Обновите конфигурацию Webpack
По умолчанию шаблон create-react-app
не предоставляет файл конфигурации Webpack, поэтому нам нужно его создать. Создайте новый файл с именем webpack.config.js
в корневом каталоге вашего проекта и добавьте следующий код:
const path = require("path"); const HTMLPlugin = require("html-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin") module.exports = { entry: { index: "./src/index.tsx" }, mode: "production", module: { rules: [ { test: /\.tsx?$/, use: [ { loader: "ts-loader", options: { compilerOptions: { noEmit: false }, } }], exclude: /node_modules/, }, { exclude: /node_modules/, test: /\.css$/i, use: [ "style-loader", "css-loader" ] }, ], }, plugins: [ new CopyPlugin({ patterns: [ { from: "manifest.json", to: "../manifest.json" }, ], }), ...getHtmlPlugins(["index"]), ], resolve: { extensions: [".tsx", ".ts", ".js"], }, output: { path: path.join(__dirname, "dist/js"), filename: "[name].js", }, }; function getHtmlPlugins(chunks) { return chunks.map( (chunk) => new HTMLPlugin({ title: "React extension", filename: `${chunk}.html`, chunks: [chunk], }) ); }
Этот файл конфигурации определяет точку входа для нашего приложения (файл index.tsx
), имя выходного файла, загрузчик TypeScript, загрузчик стилей и выходной каталог.
Теперь, когда мы настроили веб-пакет, обновите файл package.json
, чтобы включить в него следующие скрипты:
"scripts": { "build": "webpack --config webpack.config.js", "watch": "webpack -w --config webpack.config.js" }
Эти сценарии позволят вам создать расширение с помощью команды npm run build
или запустить Webpack в режиме просмотра с помощью команды npm run watch
.
Шаг 3: Добавьте файл манифеста
Файл манифеста используется для определения метаданных и разрешений для расширения Chrome. Создайте новый файл с именем manifest.json
в корневом каталоге вашего проекта и добавьте следующий код:
{ "version": "1.0.0", "manifest_version": 3, "name": "React Chrome Extension", "description": "This is a Chrome extension built with React and TypeScript", "action": { "default_popup": "js/index.html", "default_title": "React Chrome Extension" } }
В этом файле манифеста указывается имя, версия и описание расширения. Он также определяет всплывающее окно.
Шаг 4: Создайте приложение
Наконец, запустите команду npm run build в своем терминале, чтобы собрать расширение: Когда сценарий завершится → новая папка /dist
будет создана в корне нашего приложения:
Шаг 5: Загрузите расширение
- Чтобы загрузить расширение в Chrome, откройте Chrome и перейдите на страницу расширений, введя
chrome://extensions
в адресную строку. Затем нажмите кнопку «Загрузить распакованное» и выберите каталогdist
в вашем проекте. - Проверьте свое расширение, перезагрузив страницу расширений и щелкнув значок расширения.
Заключение
Вот и все! Вы создали простое расширение «Hello World» для Chrome, используя TypeScript и Webpack. Отсюда вы можете начать изучать API расширений Chrome и создавать более сложные расширения. Я надеюсь, что этот блог был полезен для начала создания расширений Chrome с помощью React.