Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ минимальноС React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с TypeScript 5.4.5

Π­Ρ‚ΠΈ шаги ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ процСсс установки ΠΈ настройки React-прилоТСния с использованиСм TypeScript, Parcel ΠΈ Babel для сборки ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΒ newapp:
mkdir newapp

БоздаСтся дирСктория newapp для вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  1. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ:
cd newapp

Π’Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ newapp, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° npm с использованиСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Β -y для создания Ρ„Π°ΠΉΠ»Π°Β package.jsonΒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:
npm init -y

Π­Ρ‚ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с настройками ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, создавая Ρ„Π°ΠΉΠ» package.json.

  1. Установка React ΠΈ ReactDOM с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm:
npm install react react-dom

Π Π΅Π°ΠΊΡ‚ ΠΈ ReactDOM ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ зависимости.

  1. Установка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Babel ΠΈ Parcel Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:
npm install --save-dev parcel-bundler @babel/preset-typescript @babel/preset-react @babel/preset-env @babel/core

Π­Ρ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ зависимости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ TypeScript, React ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… соврСмСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JavaScript.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Β .babelrc.jsonΒ ΠΈΒ babel.rc:
touch .babelrc.json

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Babel-Π° для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ настроСк прСсСтов Π² Ρ„Π°ΠΉΠ»Β .babelrc.json:
{
    "presets": [
        "@babel/preset-env",
       ["@babel/preset-react", {"runtime": "automatic"}]
    ]
}

Π—Π°Π΄Π°ΡŽΡ‚ΡΡ настройки прСсСтов для Babel Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

  1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ скрипта startΒ Π²Β package.json:
"scripts": {
	"start": "parcel index.html --open"
}

Π­Ρ‚ΠΎΡ‚ скрипт Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Parcel для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, открывая страницу Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΒ src:
mkdir src

БоздаСтся дирСктория src, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ исходники вашСго прилоТСния.

  1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°Β index.html:
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React and Parcel</title>
  </head>

  <body>
    <div id="app"> </div>
    <script src="index.tsx"> </script>
  </body>
</html>

Π­Ρ‚ΠΎΡ‚ HTML Ρ„Π°ΠΉΠ» прСдставляСт Π²Π°ΡˆΡƒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ страницу для отобраТСния React прилоТСния.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°Β App.tsx:
import React from 'react';

const App = () => (
  <h1>React and Parcel project</h1>
);
export default App;

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ React App, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° страницС.

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°Β index.tsx:
import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App.tsx';

const root = createRoot(document.getElementById('app'));
root.render(<App />);

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ReactDOM для отобраТСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° App Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ элСмСнтС app Π½Π° страницС.

  1. Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β npm start:
npm start

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° запустит ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Parcel Π² качСствС сСрвСра Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.