From 8f13dec0e4d9d6053621786cb5d784b8f43014b8 Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Wed, 4 Sep 2024 08:55:39 +0200 Subject: [PATCH] first commit --- .gitignore | 13 +++++++++++++ .prettierignore | 4 ++++ .prettierrc | 3 +++ README.md | 29 +++++++++++++++++++++++++++++ bun.lockb | Bin 0 -> 103406 bytes eslint.config.mjs | 31 +++++++++++++++++++++++++++++++ package.json | 31 +++++++++++++++++++++++++++++++ rsbuild.config.ts | 6 ++++++ src/App.css | 26 ++++++++++++++++++++++++++ src/App.tsx | 12 ++++++++++++ src/children-render/children.tsx | 13 +++++++++++++ src/children-render/parent.tsx | 24 ++++++++++++++++++++++++ src/env.d.ts | 1 + src/index.tsx | 13 +++++++++++++ tsconfig.json | 17 +++++++++++++++++ 15 files changed, 223 insertions(+) create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 eslint.config.mjs create mode 100644 package.json create mode 100644 rsbuild.config.ts create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/children-render/children.tsx create mode 100644 src/children-render/parent.tsx create mode 100644 src/env.d.ts create mode 100644 src/index.tsx create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38d7344 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ac66857 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Lock files +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..37b1dd3 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Rsbuild Project + +## Setup + +Install the dependencies: + +```bash +pnpm install +``` + +## Get Started + +Start the dev server: + +```bash +pnpm dev +``` + +Build the app for production: + +```bash +pnpm build +``` + +Preview the production build locally: + +```bash +pnpm preview +``` diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..f7941e0b54eec1ffdd2edccbb76e7715d2e722e8 GIT binary patch literal 103406 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 literal 0 HcmV?d00001 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..8825526 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,31 @@ +import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; +import js from '@eslint/js'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactJsx from 'eslint-plugin-react/configs/jsx-runtime.js'; +import react from 'eslint-plugin-react/configs/recommended.js'; +import globals from 'globals'; +import ts from 'typescript-eslint'; + +export default [ + { languageOptions: { globals: globals.browser } }, + js.configs.recommended, + ...ts.configs.recommended, + ...fixupConfigRules([ + { + ...react, + settings: { + react: { version: 'detect' }, + }, + }, + reactJsx, + ]), + { + plugins: { + 'react-hooks': fixupPluginRules(reactHooks), + }, + rules: { + ...reactHooks.configs.recommended.rules, + }, + }, + { ignores: ['dist/'] }, +]; diff --git a/package.json b/package.json new file mode 100644 index 0000000..7b0d9c4 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "react-renders", + "private": true, + "version": "1.0.0", + "scripts": { + "build": "rsbuild build", + "dev": "rsbuild dev --open", + "format": "prettier --write .", + "lint": "eslint .", + "preview": "rsbuild preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/compat": "^1.1.1", + "@eslint/js": "^9.9.1", + "@rsbuild/core": "1.0.1-rc.0", + "@rsbuild/plugin-react": "1.0.1-rc.0", + "@types/react": "^18.3.4", + "@types/react-dom": "^18.3.0", + "eslint": "^9.9.1", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^4.6.2", + "globals": "^15.9.0", + "prettier": "^3.3.3", + "typescript": "^5.5.2", + "typescript-eslint": "^8.2.0" + } +} diff --git a/rsbuild.config.ts b/rsbuild.config.ts new file mode 100644 index 0000000..c9962d3 --- /dev/null +++ b/rsbuild.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@rsbuild/core'; +import { pluginReact } from '@rsbuild/plugin-react'; + +export default defineConfig({ + plugins: [pluginReact()], +}); diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..164c0a6 --- /dev/null +++ b/src/App.css @@ -0,0 +1,26 @@ +body { + margin: 0; + color: #fff; + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + background-image: linear-gradient(to bottom, #020917, #101725); +} + +.content { + display: flex; + min-height: 100vh; + line-height: 1.1; + text-align: center; + flex-direction: column; + justify-content: center; +} + +.content h1 { + font-size: 3.6rem; + font-weight: 700; +} + +.content p { + font-size: 1.2rem; + font-weight: 400; + opacity: 0.5; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..994fa78 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,12 @@ +import './App.css'; +import { Parent } from './children-render/parent'; + +const App = () => { + return ( +
+ +
+ ); +}; + +export default App; diff --git a/src/children-render/children.tsx b/src/children-render/children.tsx new file mode 100644 index 0000000..ace5078 --- /dev/null +++ b/src/children-render/children.tsx @@ -0,0 +1,13 @@ +type ChildrenProps = { + counter: number; +}; + +export const Children = (props: ChildrenProps) => { + console.log('__children render'); + return ( +
+
I'm its child
+

My counter is {props.counter}

+
+ ); +}; diff --git a/src/children-render/parent.tsx b/src/children-render/parent.tsx new file mode 100644 index 0000000..4839186 --- /dev/null +++ b/src/children-render/parent.tsx @@ -0,0 +1,24 @@ +import { useState } from 'react'; +import { Children } from './children'; + +export const Parent = () => { + console.log('__parent render'); + const [counter, setCounter] = useState(0); + const [childrenCounter, setChildrenCounter] = useState(0); + + return ( +
+

I'm the parent

+ + +
+
These are my children
+ +
+
+ ); +}; diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..b0ac762 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..55f29bf --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +const rootEl = document.getElementById('root'); +if (rootEl) { + const root = ReactDOM.createRoot(rootEl); + root.render( + + + , + ); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6fe0027 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["DOM", "ES2020"], + "module": "ESNext", + "jsx": "react-jsx", + "noEmit": true, + "strict": true, + "skipLibCheck": true, + "isolatedModules": true, + "resolveJsonModule": true, + "moduleResolution": "bundler", + "useDefineForClassFields": true, + "allowImportingTsExtensions": true + }, + "include": ["src"] +}