Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team 26-FE] 1주차 01 PR요청 (이든, 도리) #22

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
name: Bug report
about: 버그 등록 (최대한 구체적으로 적어주세요.)
title: ''
labels: ''
assignees: ''

---

---

name: Bug report
about: Create a report to help us improve
title: "[FE|BE] 홈 UI 렌더링 실패"
labels: 'bug'
assignees: ''

---

## 버그 내용

ex) 00 기능 클릭 시 에러 발생

## 원인

ex)
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
Comment on lines +24 to +30

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

버그를 등록할 때에는 원인까지 파악하기는 힘들어보여요.
원인은 이슈에 코멘트로 달아두어 히스토리를 남기는 게 좋을 것 같습니다. :)

(+)
재현되는 과정, 사용 기기와 OS 및 브라우저의 버전은 버그 리포팅에 필수입니다!
템플릿에 추가 부탁드려용~~


## 우려 사항

ex) 클라이언트가 화내요

## 스크린샷

스크린샷 1

## 기타
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: Feature request
about: 기능 추가
title: ''
labels: ''
assignees: ''

---

---

name: Feature request
about: Suggest an idea for this project
title: '[FE|BE] 00 기능 구현 요청'
labels: 'feat'
assignees: ''

---

## 기능 요청사항

ex) 로그인 기능이 필요해요.

## 요청 세부사항

ex) 로그인 기능을 만들어주세요.

## 레퍼런스

ex) 관련 사진 및 링크 첨부
22 changes: 22 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
### About

ex) OO 기능 구현

### Description
- 흐름을 간단하게 작성하면 됩니다.

ex)
구현 사항 요약
1. OO 구조 설계
2. OO 클래스 분리
3. 메서드 구현


### Result

ex) 실행, 테스트 결과 또는 사진 첨부


### Ref

ex) 관련 이슈 직접 태그, #3, #13
60 changes: 60 additions & 0 deletions FE/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"airbnb-typescript",
"eslint:recommended",
"plugin:react/recommended",
"plugin:import/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": ["react", "import", "@typescript-eslint"],
"rules": {
"prettier/prettier": ["error", {}, { "usePrettierrc": true }],
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
"no-undef": "off",
"@typescript-eslint/no-var-require": "off",
"@typescript-eslint/no-var-requires": "off",
"import/no-unresolved": "off",
"no-use-before-define": ["error", { "functions": false }],
"react/react-in-jsx-scope": "off",
"import/order": [
"error",
{
"groups": ["builtin", "external", ["parent", "sibling"], "index"],
"pathGroups": [
{
"pattern": "@/**",
"group": "external",
"position": "after"
}
],
"alphabetize": {
"order": "asc",
"caseInsensitive": true
},
"newlines-between": "always"
}
]
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"typescript": {}
}
}
}
2 changes: 2 additions & 0 deletions FE/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/dist
9 changes: 9 additions & 0 deletions FE/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"useTabs": false,
"printWidth": 100,
"arrowParens": "avoid",
"trailingComma": "all"
}
Empty file added FE/README.md
Empty file.
10 changes: 10 additions & 0 deletions FE/babel.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"presets": [
["@babel/preset-react", { "runtime": "automatic" }],
[
"@babel/preset-env",
{ "targets": "> 0.25%, not dead", "modules": false, "useBuiltIns": "usage", "corejs": 3 }
],
"@babel/preset-typescript"
]
}
27 changes: 27 additions & 0 deletions FE/config/webpack.common.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const path = require('path');

const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
// const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

module.exports = {
resolve: {
alias: {
'@': path.resolve(__dirname, '../src'),
},
extensions: ['.js', '.jsx', '.ts', '.tsx', '.css'],
},
entry: `${path.resolve(__dirname, '../src')}/index.tsx`,
module: {
rules: [],
},
plugins: [
new HtmlWebpackPlugin({
template: `${path.resolve(__dirname, '../public')}/index.html`,
}),
new webpack.ProvidePlugin({ React: 'react' }),
new ReactRefreshWebpackPlugin(),
// new BundleAnalyzerPlugin(),
],
};
33 changes: 33 additions & 0 deletions FE/config/webpack.development.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
const { merge } = require('webpack-merge');

const common = require('./webpack.common');

module.exports = merge(common, {
mode: 'development',
devtool: 'inline-source-map',
devServer: {
open: false,
hot: true,
compress: true,
port: 3000,
historyApiFallback: true,
liveReload: true,
},
output: {
filename: '[name].[contenthash].js',
publicPath: '/',
},
module: {
rules: [
{
test: /\.(ts|tsx|js|jsx)$/,
use: 'ts-loader',
exclude: /node_modules/,
},
{
test: /\.(sa|sc|c)ss$/i,
use: ['style-loader', 'css-loader', 'file-loader'],
},
],
},
});
47 changes: 47 additions & 0 deletions FE/config/webpack.production.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const path = require('path');

const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const { merge } = require('webpack-merge');

const common = require('./webpack.common');

module.exports = merge(common, {
mode: 'production',
devtool: 'cheap-module-source-map',
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, '../dist'),
publicPath: '/',
clean: true,
},
module: {
rules: [
{
test: /\.(ts|tsx|js|jsx)$/,
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.(sa|sc|c)ss$/i,
use: [MiniCssExtractPlugin.loader, 'css-loader'],
},
],
},
plugins: [new MiniCssExtractPlugin()],
optimization: {
usedExports: true,
minimize: true,
minimizer: [
new TerserPlugin({ terserOptions: { compress: { drop_console: true } } }),
new CssMinimizerPlugin(),
],
splitChunks: { chunks: 'all' },
},
performance: {
hints: false,
maxEntrypointSize: 512000,
maxAssetSize: 512000,
},
});