Skip to content

Commit

Permalink
Project Setup (#1)
Browse files Browse the repository at this point in the history
* setup project with vite

* configured eslint on airbnb base

* applied some eslint fixes

* configured prettier

* configured husky

* installed react query, i18next, react-router

* cofigured rtl and jest

* formated code

* added firebase to gitignore

* added output dir to vite

* changed ecmaFeatures to tsx

* husky config

* setup husky pre-commit

* configured jest and created simple test

* test commit for husky

* finished configure of husky pre commit

* added pre-push

* deleted auto staging

* deleted covarage and add it to ignore

* installed husky as dev dependency
  • Loading branch information
d0wnpour authored Jan 30, 2024
1 parent 780cd77 commit 44cbfd6
Show file tree
Hide file tree
Showing 21 changed files with 11,289 additions and 80 deletions.
41 changes: 41 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:jest/recommended',
'plugin:react-hooks/recommended',
'airbnb',
'airbnb/hooks',
'airbnb-typescript',
'prettier',
],
ignorePatterns: ['dist', '.eslintrc.cjs', '!src/**', 'vite.config.ts'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: {
tsx: true,
},
project: './tsconfig.json',
},
plugins: ['react-refresh', '@typescript-eslint', 'jest'],
rules: {
'no-underscore-dangle': 0,
'import/extensions': [
'error',
'ignorePackages',
{
ts: 'always',
tsx: 'always',
},
],
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
'react/jsx-uses-react': 'off',
},
}
73 changes: 19 additions & 54 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,63 +4,28 @@ logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
firebase-debug.log*
firebase-debug.*.log*

# Firebase cache
.firebase/

# Firebase config

# Uncomment this if you'd like others to create their own Firebase project.
# For a team working on the same Firebase project(s), it is recommended to leave
# it commented so all members can deploy to the same project(s) in .firebaserc.
# .firebaserc

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

node_modules
dist
coverage/
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
2 changes: 2 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
npm run format
npm run lint
1 change: 1 addition & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npm run test
7 changes: 7 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"semi": false,
"singleQuote": true,
"jsxSingleQuote": true,
"trailingComma": "all",
"printWidth": 80
}
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default {
// other rules...
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
}
```

- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
10 changes: 10 additions & 0 deletions __tests__/App.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/* eslint-disable react/react-in-jsx-scope */
import { render, screen } from '@testing-library/react';
import App from '../src/App.tsx';
import '@testing-library/jest-dom';

test('renders App component', () => {
render(<App />);

expect(screen.getByText('Vite + React')).toBeInTheDocument();
});
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
13 changes: 13 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module.exports = {
collectCoverage: true,
collectCoverageFrom: ['src/**/*.{ts,tsx}'],
roots: ['<rootDir>/__tests__'],
moduleNameMapper: {
'\\.(css|less|scss)$': 'identity-obj-proxy',
},
transformIgnorePatterns: ['/node_modules/'],
testMatch: ['**/__tests__/**/*.test.(ts|tsx|js|jsx)'],
coverageDirectory: 'coverage',
testEnvironment: 'jsdom',
preset: 'ts-jest',
}
Loading

0 comments on commit 44cbfd6

Please sign in to comment.