Setting Up Vite and React for Chrome Extension Development

Sviatoslav Oleksiv
5 Apr 202417:42

Summary

TLDRВ этом видео пользователь демонстрирует, как создать расширение для браузера Chrome с использованием React и TypeScript. Он начинает с создания нового проекта, выбирает React и TypeScript, устанавливает необходимые пакеты и создает файл manifest.json. В процессе он обсуждает размещение файлов, настройку разрешений и создание фонового скрипта для управления панелью расширения. Наконец, он проверяет работу расширения, открывая и закрывая панель с помощью иконки расширения.

Takeaways

  • 🌐 Создание расширения для Chrome с использованием React и TypeScript.
  • 🔨 Использование команды 'npm create vite@latest' для начала работы с проектом.
  • 📝 Выбор React и TypeScript как фреймворка и языка для проекта.
  • 🛠️ Установка зависимостей проекта с помощью 'npm install'.
  • 📁 Создание файла manifest.json для настройки расширения Chrome.
  • 🔧 Настройка manifest.json с использованием последней версии (3) и добавлением необходимых разрешений.
  • 🖼️ Использование иконок для кнопки расширения в Chrome.
  • 🔄 Необходимость создания сборки приложения для его корректной работы в Chrome.
  • 🔗 Подключение manifest.json к скрипту панели боковой панели.
  • 🔄 Необходимость обновления и проверки работы расширения после внесения изменений.
  • 🛠️ Исправление ошибок и доработка функциональности расширения с помощью background scripts.

Q & A

  • Какой инструмент используется для создания расширения Chrome?

    -Для создания расширения Chrome используется npm и выбирается React как фреймворк.

  • Какой файл необходимо добавить для создания Chrome-расширения?

    -Для создания Chrome-расширения необходимо добавить файл manifest.json.

  • Какой версии манифеста рекомендуется использовать?

    -Рекомендуется использовать версию 3 манифеста, так как это последняя версия на момент записи видео.

  • Какой тип файла должен быть открыт как панель по умолчанию в расширении?

    -Панель по умолчанию должна быть открыта с помощью index.html.

  • Какой элемент манифеста отвечает за отображение иконки расширения?

    -Элемент 'action' в манифесте отвечает за отображение иконки расширения.

  • Как можно открыть панель расширения при нажатии на иконку?

    -Для открытия панели при нажатии на иконку необходимо настроить 'action' в манифесте и использовать скрипт background.js.

  • Что такое 'service worker' и зачем он нужен в расширении?

    -'Service worker' - это скрипт, который работает в фоновом режиме и отвечает за функциональность расширения, например, открытие панели при нажатии на иконку.

  • Какой командой можно собрать проект для расширения Chrome?

    -Для сборки проекта можно использовать команду 'npm run build'.

  • Как проверить, работает ли расширение после сборки?

    -Для проверки работы расширения после сборки, его можно загрузить в Chrome через раздел 'расширения', выбрав опцию 'Загрузить распакованное расширение'.

  • Какие разрешения необходимы для работы расширения с панелью?

    -Для работы расширения с панелью необходимы разрешения 'storage' и 'side_panel'.

Outlines

00:00

😀 Создание расширения для Chrome с использованием React

В этом параграфе описывается процесс создания расширения для браузера Chrome с использованием React. Автор начинает с посещения сайта, где предлагается начать работу с npm и выбирает React в качестве фреймворка. Он создает новый проект, выбирает TypeScript и устанавливает все необходимые пакеты. Затем он открывает проект и запускает сервер для разработки. Автор планирует создать расширение, которое будет отображаться в виде боковой панели в Chrome.

05:02

📄 Добавление файла manifest.json для Chrome-расширения

Второй параграф фокусируется на добавлении файла manifest.json, который является необходимым для создания расширения Chrome. Автор обращается к Chat GPT за примером manifest.json и копирует предоставленный код. Он обсуждает, что файл должен быть включен в папку dist после сборки проекта. Автор также решает, что не нужно создавать всплывающее окно, а вместо этого будет использовать боковую панель. Он изменяет разрешения и устанавливает путь к файлу, который будет открыт при нажатии на иконку расширения.

10:03

🔄 Построение и тестирование расширения без background-скripta

В этом параграфе автор пытается построить и протестировать расширение без background-скripta. Он обсуждает, что можно создать manifest.json без background-скripta и стремится проверить, будет ли это работать. После неудачного попытки открыть боковую панель при нажатии на иконку, автор решает добавить background-скрипт, чтобы исправить проблему. Он также обнаруживает, что для открытия боковой панели при нажатии на иконку необходимо использовать background-скрипт.

15:03

🛠️ Исправление и завершение работы расширения

В заключительном параграфе автор ищет документацию, чтобы вспомнить, как открыть боковую панель при нажатии на иконку. Он обнаруживает, что для этого необходимо настроить action click в manifest.json и использовать background-скрипт. Автор добавляет необходимые настройки и снова строит проект. После этого он успешно открывает и закрывает боковую панель, используя иконку расширения. Автор завершает видео, надеясь, что зрители нашли его инструкцию полезной, и просит оставить комментарии.

Mindmap

Keywords

💡Chrome расширение

Chrome расширение - это дополнительное программное обеспечение, которое расширяет функциональность браузера Google Chrome, предоставляя новые возможности и улучшая опыт пользователя. В видео рассказывается о создании такого расширения, используя React и TypeScript, что является основной темой и целью инструкций.

💡React

React - это популярный JavaScript-фреймворк, разработанный Facebook для создания пользовательских интерфейсов. В контексте видео, React выбран как основной фреймворк для разработки Chrome расширения, что показывает, что расширение будет иметь графический интерфейс, разработанный с использованием React.

💡TypeScript

TypeScript - это супермножество языка программирования JavaScript, добавляющее в него типы. В видео упоминается выбор TypeScript в качестве одного из вариантов для создания проекта, что указывает на стремление к более безопасному и масштабируемому коду для расширения.

💡npm

npm (Node Package Manager) - это менеджер пакетов для JavaScript, позволяющий устанавливать, обновлять и удалять пакеты. В видео используется команда 'npm create' для инициализации нового проекта и 'npm install' для установки зависимостей, что является стандартным процессом в разработке с использованием Node.js.

💡Manifest v3

Manifest v3 - это версия спецификации manifest-файла для Chrome расширений, которая внедряет новые возможности и улучшения. В видео упоминается использование этой версии, что указывает на современные методы разработки и соответствие последним требованиям Chrome.

💡background script

Background script - это скрипт, который работает в фоновом режиме и выполняет задачи, не связанные с пользовательским интерфейсом. В видео рассматривается вопрос о необходимости background script для работы расширения, что является важным аспектом его архитектуры.

💡popup

Popup - это всплывающее окно, которое может быть использовано в Chrome расширениях для отображения информации или интерактивных элементов. В видео упоминается, что popup не требуется для данного расширения, что определяет тип графического интерфейса расширения.

💡action

Action - это объект в манифесте Chrome расширения, который определяет, что произойдет при клике на иконку расширения. В видео рассматривается использование action для открытия side panel при клике на иконку расширения, что является ключевым моментом в реализации функциональности расширения.

💡side panel

Side panel - это панель, которая открывается в боковой части окна браузера. В видео описывается процесс создания side panel с использованием Chrome расширения, что является основной функцией расширения, о которой рассказывается в видео.

💡service worker

Service worker - это фоновый скрипт в веб-приложениях, который позволяет обрабатывать запросы и управлять функциями, такими как push notifications и background sync, даже когда веб-страница закрыта. В видео упоминается ошибка с нераспознаваемым service worker, что указывает на важность их правильной настройки для работы расширения.

Highlights

Introduction to creating a Chrome extension using React and Webpack.

Accessing the official website to get started with Chrome extension development.

Using npm to create a new React project.

Choosing React as the framework for the Chrome extension.

Deciding whether to use TypeScript and SWC as the transpiler.

Installing the necessary packages for the project.

Running the project to see the default functional page.

Exploring how to make the React app work as a Chrome extension.

Adding a manifest.json file to the project.

Discussing the purpose of the manifest version number.

Deciding whether to include a popup or a sidebar in the extension.

Setting up permissions in the manifest.json file.

Building the application and preparing it for the Chrome extension.

Linking the manifest with the sidebar script.

Creating a default icon for the extension.

Exploring the use of background scripts in Chrome extensions.

Building the extension and testing it without a background script.

Loading the unpacked extension in Chrome to test its functionality.

Discussing the need for a background page to open the side panel.

Implementing the action to open the side panel on icon click.

Debugging the extension to ensure the side panel opens and closes correctly.

Final thoughts and call to action for feedback from viewers.

Transcripts

play00:01

hi guys hi guys today I'm going to show

play00:05

you how to create Chrome extension using

play00:11

re and whe so uh I'll just go ahead and

play00:17

get

play00:17

started so here is the withjs dod

play00:23

website where we can find how to get

play00:26

started so we click button get started

play00:30

and let's

play00:31

see so here is here are the instructions

play00:35

how to do that npm create we latest we

play00:39

use we use just

play00:41

npm um so I think that's many people use

play00:47

that so we just copy that and we go

play00:53

to and go and create a new

play00:57

project how do we do that we just go to

play01:00

the folder we want to have the project

play01:05

to be

play01:07

created and let's let's paste this

play01:11

command in

play01:15

here and let's see what

play01:20

happens so it asks for the project name

play01:25

let's um

play01:27

Chrome extension

play01:34

test now we want to choose from

play01:37

here which framework or Library we want

play01:41

to use and we choose

play01:44

react

play01:46

now we can use typescript typescript

play01:50

plus s swc I'm not sure what is

play01:58

that look like a already I

play02:01

already Googled it but

play02:08

actually so um it's kind of a new

play02:13

transpiler or transpiler

play02:24

for okay never mind I'll just use

play02:28

typescript regular trans

play02:30

spiler and the project is installed

play02:34

let's go and open that

play02:40

Library

play02:47

umm

play02:49

okay let's open it let's terminate

play02:52

terminate all the the current processes

play02:57

which I

play02:58

have and now we have the react

play03:03

we installed

play03:08

let's let's actually install the

play03:12

packages because it should actually say

play03:15

what should we do next

play03:18

after we create latest okay here it is

play03:23

go to your

play03:24

project and now we should run npm

play03:28

install

play03:30

and then npm npm run there it just to

play03:34

run the

play03:36

regular the regular

play03:38

um

play03:45

server but for Chrome extension we are

play03:48

going to use something else so here it

play03:52

is npm

play03:54

packages have been successfully

play03:56

installed and now we can run this

play04:00

command this command is actually uh

play04:03

located in

play04:04

here so you can run it

play04:08

from package Json itself if you have a

play04:12

uh jet brains webstorm I think it should

play04:16

be similar with W

play04:19

code so now if you open that it should

play04:24

it should show you here the

play04:27

default page which is functional as you

play04:30

can

play04:32

see but how to make it work as a Chrome

play04:36

extension that's the

play04:38

question um so I plan to make this as a

play04:43

Chrome extension to be opened on the

play04:46

left sa side panel like

play04:52

here inside of here it's possible to

play04:55

open extensions if they support

play04:58

that uh so let's do

play05:01

that at least we are running this and

play05:08

um actually to make the Chrome extension

play05:12

we just need to add one file I believe

play05:16

at least one file called manifest

play05:21

Json so um let's let's do that but I'll

play05:26

go ahead and ask chat GPT to provide

play05:29

Prov me a

play05:32

u basic

play05:33

manifest manifest Json

play05:40

example so I don't search

play05:46

for for that

play05:49

provide a

play05:51

manifest Json to create a Chrome

play05:58

extension

play06:13

y okay so as you can

play06:19

see that is Manifest version number

play06:22

three that's the latest one I

play06:24

believe and uh let's use it we can

play06:29

actually C copy the code here and we can

play06:33

go and create it inside of

play06:37

our I

play06:42

believe

play06:45

inside not

play06:47

SRC but in the end result we would need

play06:50

that manifest to be

play06:55

included into the dist

play06:58

folder so let's

play07:00

see um popup we don't need popup at

play07:04

least I don't need a

play07:06

popup uh but that's an action the action

play07:10

which is a what is going to happen when

play07:13

you click uh the the extension button

play07:19

default icon we don't have that and we

play07:22

will change that to the sidebar uh HTML

play07:27

file now background

play07:30

do we really have a

play07:33

background uh we don't have a background

play07:36

JavaScript because we don't have

play07:38

anything to run at least for my

play07:41

needs permission storage

play07:44

okay uh what should we do

play07:51

next we actually should make a

play07:55

build of

play07:58

the

play08:00

application the whole

play08:05

application let's

play08:07

see okay uh and I believe that

play08:11

everything we put in here into public

play08:14

folder it should also be inside of build

play08:18

folder let's try to build it

play08:21

again and let's

play08:24

see okay manifest exist now and the only

play08:28

thing we we need to do right now is to

play08:31

connect our manifest with

play08:35

the sidebar script in here we don't run

play08:40

content scripts too I just need a

play08:45

sidebar icons we don't have any icons

play08:48

for

play08:50

now

play08:52

okay so default popup index no it's not

play08:55

a

play08:57

popup um let's Google Google for um

play09:01

Google Chrome side panel

play09:06

API let's

play09:14

see okay so permissions we need to add

play09:17

permissions uh

play09:23

permissions not storage but side panel

play09:26

we delete it in

play09:28

here

play09:30

permissions we are okay and to okay so

play09:36

we need to set the correct file to be

play09:40

opened as a side panel so that's how we

play09:44

do that we write side panel default path

play09:47

and in our case it's not side panel HTML

play09:50

it should be index HTML

play09:55

right okay now it's

play09:57

done and we need to to

play10:00

[Music]

play10:02

trigger okay we'll do that

play10:07

later background can we do without

play10:11

background can I have manifest Json

play10:16

without background

play10:19

script question mark certainly you can

play10:23

create manifest

play10:24

without okay that's great I like it

play10:33

and now let's build it again and let's

play10:35

try to run this extension and

play10:41

see is Miracle happens is it going to

play10:44

run from the first

play10:47

time so let's go in here

play10:50

and uh extensions manage

play10:53

extensions load unpacked so let's see

play10:57

where did

play10:58

we

play11:01

where do we locate it uh I will copy

play11:04

path

play11:06

reference like

play11:08

here and let's load unpacked let's paste

play11:12

it to go directly there let's use this

play11:16

folder and we are ready to choose the

play11:20

folder it doesn't give any errors that's

play11:24

good and once we uploaded the extension

play11:29

we you should actually see

play11:30

it in in the list and if we hit that

play11:35

okay you can see

play11:37

that it's up and running it's working

play11:42

functional so uh we are ready to

play11:46

continue how do we continue I would add

play11:53

action I would add

play11:56

action I mean I want that extension to

play12:00

be

play12:00

opened when I hit this icon so how do we

play12:06

do that there

play12:07

is um there is something called action

play12:11

default popup I'm not

play12:14

sure is default

play12:16

popup let's see

play12:19

action default

play12:22

title

play12:24

uh on action click okay let's

play12:28

see

play12:35

so let's try this default popup

play12:39

HTML

play12:47

H um I actually forgot how to do that

play12:50

how

play12:51

to

play12:53

open side panel on icon

play12:58

click

play13:05

okay so we have size panel in

play13:13

here okay the the

play13:16

the information is a bit outdated

play13:24

because let's see so the default pop up

play13:27

I actually have that in another

play13:29

extension let me try to remember so sta

play13:35

spin I have

play13:39

that that's another project I worked on

play13:42

it's built on top of

play13:45

angular but let's find manifest

play13:50

Json

play13:51

[Music]

play13:55

and okay default title click to open

play13:58

Panel

play14:00

but this is not going to open it by

play14:05

itself anyways let's let's see I think

play14:10

what can open the default panel panel

play14:15

is background

play14:21

page so background let's see where where

play14:25

do we have background okay background Js

play14:31

[Music]

play14:44

and H that's weird okay let me try to

play14:48

build it again and let's see whether

play14:53

this uh

play14:55

works we'll need to refresh let's see no

play15:00

it doesn't

play15:03

work

play15:07

H

play15:14

um okay let's see the docks because I I

play15:18

totally forgot how

play15:20

to open the side

play15:27

panel

play15:31

okay you can open the side panel through

play15:34

user interactions using side panel open

play15:36

and set panel Behavior suest action

play15:40

click okay so I think we need to use

play15:43

this one and see in my old

play15:46

project okay yeah we can see

play15:49

that we set this

play15:52

setting and I believe we should

play15:56

also have our um

play16:01

[Music]

play16:02

background JS oh not Json

play16:07

JS and

play16:10

let's add

play16:13

that worker service

play16:17

worker right something like that we will

play16:21

need to build it

play16:24

again let's try to refresh

play16:27

it

play16:29

and let's try to

play16:33

open now there are

play16:35

errors unrecognized service worker okay

play16:39

let's

play16:41

see um how it looks is

play16:46

it

play16:49

background all right that's

play16:57

funny

play17:01

let's refresh it again and let's try to

play17:04

click okay it works and when we hit

play17:07

again it closes

play17:10

that's what I I

play17:13

need and it's working great great great

play17:18

great that's actually it

play17:21

guys I hope that you find

play17:25

this I don't know instruction or video

play17:29

useful leave me a comments to this video

play17:33

so I know your opinion thank you

play17:40

bye

Rate This

5.0 / 5 (0 votes)

Связанные теги
Расширения ChromeReactTypeScriptРуководствоПрограммированиеWeb РазработкаChrome APIРасширениеСкрипт