All Projects → wkylin → promotion-web

wkylin / promotion-web

Licence: MIT license
基于React: v18.x.x/Webpack: v5.x.x/React Router v6.x.x/ Antd: v5..x.x/Fetch Api/ Typescript: v4.x.x 等最新版本进行构建...

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects
CSS
56736 projects
Less
1899 projects
HTML
75241 projects
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to promotion-web

laravel-react-boilerplate
Laravel React Boilerplate with Ant Design, Route-Level Code Splitting, Redux, Sanctum Auth
Stars: ✭ 49 (-86.9%)
Mutual labels:  react-redux, antd, react-hooks, antd4
react-vite-admin
This Starter utilizes React, Recoil, React Query, React Hooks, Typescript, Axios And Vite. 全新技术栈的后台管理系统
Stars: ✭ 90 (-75.94%)
Mutual labels:  antd, vite, react-hooks, antd-design
7-react-admin-ts
用 ts + react-hooks 实现的管理后台
Stars: ✭ 23 (-93.85%)
Mutual labels:  stylelint, antd, react-hooks
dva-typescript-antd-starter-kit
A admin dashboard application demo based on antd by typescript and dva
Stars: ✭ 61 (-83.69%)
Mutual labels:  stylelint, prettier, antd
eslint-config-ns
ESLint config ready to be used in multiple projects. Based on Airbnb's code style with prettier, jest and react support.
Stars: ✭ 27 (-92.78%)
Mutual labels:  stylelint, prettier, react-hooks
starbase
⭐ Production-ready website boilerplate made with webpack 5, modern JS (via Babel 7) & Sass
Stars: ✭ 70 (-81.28%)
Mutual labels:  stylelint, webpack5
Web Configs
Common configurations for building web apps at Shopify
Stars: ✭ 302 (-19.25%)
Mutual labels:  stylelint, prettier
ultimate-hot-boilerplate
🚀 node-react universal app boilerplate with everything on hot reload, SSR, GraphQL, Flow included
Stars: ✭ 35 (-90.64%)
Mutual labels:  stylelint, prettier
React Ssr Starter
All have been introduced React environment
Stars: ✭ 20 (-94.65%)
Mutual labels:  stylelint, prettier
React 2048 Game
🎮 A fancy 2048 game build with react, redux best practices.
Stars: ✭ 401 (+7.22%)
Mutual labels:  stylelint, prettier
awesome-web-react
🚀 Awesome Web Based React 🚀 Develop online with React!
Stars: ✭ 31 (-91.71%)
Mutual labels:  react-redux, react-hooks
react-component-library-lerna
Build your own React component library managed with lerna, presented with storybook and published in private npm registry.
Stars: ✭ 55 (-85.29%)
Mutual labels:  stylelint, prettier
Prettier Stylelint
code > prettier > stylelint > formatted code
Stars: ✭ 162 (-56.68%)
Mutual labels:  stylelint, prettier
vue-component-lib-starter
A bare-bones example of creating your own Vue component library.
Stars: ✭ 221 (-40.91%)
Mutual labels:  vite, vitepress
ember-boilerplate
👓 The stable base upon which we build our Ember.js projects at Mirego.
Stars: ✭ 33 (-91.18%)
Mutual labels:  stylelint, prettier
React Mobx React Router Boilerplate
A simple boilerplate based on create-react-app and add mobx, react-router, linter, prettier and so on. 一个简单的 react 脚手架依赖于 create-react-app 新增了 mobx react-router,linter,prettier 等。
Stars: ✭ 12 (-96.79%)
Mutual labels:  stylelint, prettier
Express Webpack React Redux Typescript Boilerplate
🎉 A full-stack boilerplate that using express with webpack, react and typescirpt!
Stars: ✭ 156 (-58.29%)
Mutual labels:  stylelint, react-redux
Stylelint Prettier
Stylelint plugin for Prettier formatting
Stars: ✭ 188 (-49.73%)
Mutual labels:  stylelint, prettier
figma-plugin-typescript-boilerplate
Figma plugin TypeScript boilerplate to start developing right away
Stars: ✭ 43 (-88.5%)
Mutual labels:  stylelint, prettier
element-plus-admin
基于vite+ts+elementPlus
Stars: ✭ 361 (-3.48%)
Mutual labels:  stylelint, vite

Pro React Admin

check-status build status version-status license contributors

项目特性

  1. 升级 Antd 5.0, 实现亮白与暗黑主题切换,并自定义组件主题,且组合紧凑算法实现相关主题
  2. 基于 React 最新版本,拥抱 Hooks
  3. 基于 React Router V6, 实现嵌套路由更方便
  4. 基于 Webpack 最新版本,实现多环境打包部署,代码分割优化,结合官方分析工具,实时优化代码
  5. 同时 支持 vite, 极速构建
  6. 基于 Faker 实现 Mock Server,不依赖后端实现模拟数据更加方便
  7. 封装 Fetch, 实现 useFetch, 请求更加方便,取消请求,实现请求及响应拦截,方便数据处理及统一报错提示
  8. 支持 TypeScript, 一切变得可控,扼杀错误于摇篮之中
  9. 支持多页签,提升效率
  10. 代码风格统一,项目统一配置 ESLint/Prettier/Husky/EditorConfig
  11. 配置 Commit message, 使用标准 commit 生成 changelog 标准化
  12. 配置 Sentry,方便日志追踪,及时发现问题
  13. 实现 ErrorBoundary,方便定位问题,避免不可预知的问题导致系统崩溃
  14. 代码分割,组件懒加载,Loading 垂直水平居中
  15. 集成 Bit,跨项目复用组件,支持在多个仓库间隔离和复用代码,简化协作过程,可以共享、维护和同步来自不同项目的隔离组件
  16. 集成 Bookstory, 方便生成组件文档
  17. 更多特性请 fork 项目,相信我,你会有意想不到的收获

Antd 4.x.x 版本

  1. 基于 Antd 实现亮白及暗黑两套主题, 请参见 feature-antd4 分支

Technology Stack

  1. React: v18.x.x React
  2. React Router: v6.x.x React Router
  3. Webpack:v5.x.x Webpack
  4. Babel: v7.x.x Babel, Versions
  5. Antd: v5.x.x Ant Design
  6. TypeScript: v4.x.xTypeScript

Development

  1. git clone https://github.com/wkylin/pro-react-admin.git
  2. cd pro-react-admin
  3. 可以选择以下两种方式的任一方式启动项目, 其他 cli 参考 package.json 中的 scripts
    - $ npm start
    - $ npm run dev:faker
    - $ npm run vite:dev:faker
  4. Bit - Build composable software
    - $ npm i -g @teambit/bvm
    - $ bvm install
    - $ bvm upgrade
    - $ bit start
  5. Storybook -- A tool for UI development
    - npx storybook init
    - npm run storybook

脚手架--白泽 baize

  • 可以使用为此项目准备的脚手架开发--白泽 baize

       > npm install baize --location=global
       > baize

VSCode extension: 别名路径跳转

    "alias-skip.mappings": {
        "@src": "/src",
        "@stateless": "/src/components/stateless",
        "@stateful": "/src/components/stateful",
        "@hooks": "/src/components/hooks",
        "@container": "/src/components/container",
        "@assets": "/src/components/assets",
        '@pages': path.resolve('./src/pages'),
        '@routers': path.resolve('./src/routers'),
        '@utils': path.resolve('./src/utils'),
    }

WebStorm 别名跳转设置

  1. Settings >> Languages & Frameworks >> Javascript >> Webpack: 指定 Configuration file: webpack\webpack.common.js

使用标准 commit 生成 changelog 标准化

  • conventional-changelog

  • standard-version

  • npm install

  • package.json

  • git commit

  • conventional-changelog-cli

  • standard-version

    • changes
    • git add . / git cz
    • npm run release
    npm install --save-dev commitizen
    npm install --save-dev cz-conventional-changelog
    "config": {
      "commitizen": {
        "path": "cz-conventional-changelog"
      }
    }
    git add .
    git cz or cz
    npm install -g conventional-changelog-cli
    conventional-changelog -p angular -i CHANGELOG.md -s
    npm install -g standard-version
    "release": "standard-version --tag-prefix \"publish/\""

约定式提交

  1. Conventional Commits

Commit message

  1. The commit message should be structured as follows:

      <type>[optional scope]: <description>
      <BLANK LINE>
      [optional body]
      <BLANK LINE>
      [optional footer(s)]
  2. "type-enum": ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test"]

  3. type-enum 说明文档:

    • build: 依赖调整 影响构建系统或外部依赖的更改 (示例作用域:gulp, broccoli, npm)
    • chore: 杂务处理 其他不会修改源文件或者测试文件的更改
    • ci: 脚本变更 对 CI 配置文件和脚本的更改(示例作用域: Travis, Circle, BrowserStack, SauceLabs)
    • docs: 文档变更 添加或者更新文档
    • feat: 添加功能 引入新的特性
    • fix 错误修复 修复 bug
    • perf: 性能优化 更改代码以提高性能
    • refactor: 代码重构 即不是修复 Bug,也不是添加特性的代码更改
    • revert: 恢复版本 恢复到上一个版本
    • style: 格式调整 不会影响代码含义的更改(空格,格式缺少分号等)
    • test: 更新测试 添加或者更新测试
  4. https://www.npmjs.com/package/devmoji

  5. https://gitmoji.dev/

  6. git commit 工具链

  7. https://theodorusclarence.com/library/conventional-commit-readme

React Code Splitting Library

  1. Loadable Components

Mock Server

// mock index.js
npm run dev:faker

Deployment

  1. Deployment: [Deployment] (https://create-react-app.dev/docs/deployment)

  2. Deploy gh-pages:

    "predeploy": "npm run build:production",
     "deploy": "gh-pages -d dist",

待解决

  1. 配备比较完善的脚手架:
  2. 完善文档:
  3. CacheRoute: react-router-cache-route

Docusaurus

  1. Github:
  2. Demo:

已支持特性

  1. TypeScript: TypeScript
  2. Mock Server
  3. 单页面多页签参考
  4. Axios
  5. React SVGR

代码规范:ESLint Prettier Husky EditorConfig

  1. ESLint: ESLint

    ESLint is a linter for the JavaScript language, written in Node.js. That helps you find and fix problems in your JavaScript code.

    https://json.schemastore.org/eslintrc

  2. Prettier: Prettier

    Prettier is an opinionated code formatter that formats the code with the help of rules we set.

  3. Husky: Husky

    Husky is an NPM package that lets you run a set of commands or script before any git action. For eg pre-push, pre-commit, pre-rebase.

  4. Commit Lint: Commit Lint

    CommitLint helps your team adhering to a commit convention. By supporting npm-installed configurations it makes sharing of commit conventions easy.

  5. Editor Config: EditorConfig EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.

  6. Semantic Versioning: Semantic Versioning

  7. Active hooks: https://typicode.github.io/husky/#/?id=install

  8. Prettierrc http://json.schemastore.org/prettierrc

  9. Conflict eslint prettier Conditional (ternary) operator

     // lint-staged
    
     "lint-staged": {
       "**/*": [
         "npm run prettier:fix"
       ],
       "src/**/*.{js, jsx, ts, tsx}": [
         "npm run eslint:fix",
         "npm run prettier:fix"
       ],
       "src/**/*.less": [
         "npm run stylelint:fix",
         "npm run prettier:fix"
       ],
       "*.md": [
         "npm run markdownlint:fix",
         "npm run prettier:fix"
       ]
     },
     // .eslintrc.json
     "extends": ["plugin:react/recommended", "standard", "prettier"],
     // package.json
     "prettier:fix": "prettier --write \"src/**/*\" --end-of-line auto --ignore-unknown",

自动化持续代码审查工具

  1. DeepSource/
  2. DeepScan

Sentry 接入

  1. Sentry
  2. 遇到的问题:
    • ERROR in Sentry CLI Plugin: spawn /Users/sheldon/Desktop/promotion-manage-web/node_modules/@sentry/cli/sentry-cli ENOENT
    • 解决方案参考:https://juejin.cn/post/6961012856636571655
    • "sentry:check": "node check-sentry.js"

VSCode Extensions

  1. ErrorLens: ErrorLens
  2. SonarLint: https://www.sonarlint.org/

CSS Modules

A CSS Module is a CSS file in which all class names and animation names are scoped locally by default.

  1. PostCSS: PostCSS

  2. StyleLint: StyleLint npx stylelint --help

ACSS

  1. Windi CSS: Windi CSS

  2. TailWind CSS: TailWind CSS

CI/CD 自动化构建

  1. GitHub Actions

Test

  1. Jest
  2. React Testing Library
  3. React Hooks Testing Library
  4. Cypress
    1. npm install jest babel-jest @babel/preset-env @babel/preset-react react-test-renderer --save-dev
    2. npm install  --save-dev @testing-library/react
    3. npm install cypress --save-dev
    4. npm install --save-dev @testing-library/react-hook

Plugins

  1. react-refresh-webpack-plugin
  2. react-refresh

HTTP

  1. HTTP: HTTP

Code Contributors

Choose A License

  1. MIT

Server: Dev, Test, UAT(Live), Staging, Demo, Production

  1. Server Info

Copyright (c) 2021 Promotion Web Licensed under the Apache License.

NPM version

npm version [| major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=[alpha, beta, rc]] | from-git]

Git Tag

  1. git tag -a v1.2.0 -m "version: 1.2.0"
  2. git push origin v1.2.0
  3. git push origin --tags

Nginx

  1. Mac Nginx

     brew install nginx
     brew reinstall nginx
    
     /usr/local/var/www
     /usr/local/etc/nginx/nginx.conf
     /usr/local/etc/nginx/servers/
    
     brew services list
     brew services start nginx
     brew services stop nginx
     brew services restart nginx
  2. Nginx.conf

    server {
     listen       8081;
     #server_name  localhost;
     server_name  www.promotion-web.com;
    
     location / {
         root   /usr/local/var/www/promotion-web;
         index  index.html index.htm;
         try_files  $uri $uri/ /index.html @rewrites;
         expires -1;
         add_header Cache-Control no-cache;
         # proxy_pass http://localhost:3000;
     }
     # 接口转发,如果需要的话
     #location ~ ^/api {
     #  proxy_pass http://www.wklin.com;
     #}
     location @rewrites {
       rewrite ^(.+)$ /index.html break;
     }
     # 或者全部重定向
     # return 301 https://$server_name$request_uri;
    }
    
     # SwitchHosts!
     192.168.1.101 www.promotion-web.com
  3. Nginx for Windows

       1. start nginx
       2. nginx -s stop
       3. nginx -s quit
       4. nginx -s reload
       5. nginx -s reopen

Tree Node Cli

  1. npm install -g tree-node-cli

  2. Mac: tree -L 2 -I "node_modules" -r -F

  3. Win: treee -L 2 -I "node_modules" -r -F

  4. tree node

     .
     ├── webpack/
     │   ├── webpack.prod.js
     │   ├── webpack.dev.server.js
     │   ├── webpack.dev.js
     │   ├── webpack.common.js
     │   ├── process.js
     │   ├── paths.js
     │   └── dev.server.js
     ├── src/
     │   ├── utils/
     │   ├── styles/
     │   ├── store/
     │   ├── service/
     │   ├── routers/
     │   ├── reducers/
     │   ├── pages/
     │   ├── index.js
     │   ├── components/
     │   ├── assets/
     │   ├── actions/
     │   └── App.js
     ├── public/
     │   ├── robots.txt
     │   ├── manifest.json
     │   ├── index.ejs
     │   └── favicon.ico
     ├── postcss.config.js
     ├── package.json
     ├── package-lock.json
     ├── faker/
     │   ├── utils/
     │   ├── shops/
     │   ├── index.js
     │   └── app/
     ├── docker-compose.yml
     ├── dist/
     │   ├── static/
     │   ├── index.html
     │   └── favicon.ico
     ├── babel.config.js
     ├── README.md
     ├── Dockerfile
     └── CHANGELOG.md

Webpack Analyse

  1. Webpack 官方分析工具

       npm run analyze:build

CRACO:Create React App Configuration Override

  1. https://github.com/gsoft-inc/craco

与 ESLint 风格不一致

  1. "lint:json": "jsonlint --quiet src/*/.json",
  2. "standard": "standard src/*/",
  3. "standard:fix": "standard --fix src/*/",
  4. rm -rf package-lock.json

Update npm

  npm install [email protected] --save-dev
  "webpack-dev-server": "^4.1.1",
  Uncaught TypeError: SocketClient is not a constructor

GitHub Proxy

  1. 首先确认自己 git 拉取代码的方式

      git remote -v
  2. 设置代理

      git config --global https.proxy 127.0.0.1:10808
      git config --global http.proxy 127.0.0.1:10808
      git config --global http.proxy 'socks5://127.0.0.1:10808'
      git config --global https.proxy 'socks5://127.0.0.1:10808'
  3. 查看代理是否成功

      git config --get --global http.proxy
  4. 查看 git 配置

      git config --global --list
  5. 取消代理

      git config --global --unset http.proxy
      git config --global --unset https.proxy

pm-keeper

  1. https://www.npmjs.com/package/pm-keeper

npm i && npm ci

  1. npm ci vs. npm install

Husky 不起作用解决方案

参考官网:https://typicode.github.io/husky/#/ 按以下步骤进行设置:

  1. 删除 .git 目录下的 hooks 及 .husky

  2. 查看 git config 配置是否存在 core.hookspath=.husky

      git config --list
    
  3. 删除配置及卸载 Huksy:

      npm uninstall husky && git config --unset core.hookspath
    
  4. 再次安装 Husky:

      npm install husky --save-dev
      // npm set-script prepare "husky install"
      npx husky-init
    
  5. 新增 Hooks:

      npx husky add .husky/pre-commit "npx lint-staged"
      npx husky add .husky/pre-commit "npx pretty-quick --staged"
      npx husky add .husky/commit-msg 'npx --no-install commitlint --edit'
    

Show your support

If you like the project, give it a star ⭐️, it will be a great encouragement to me.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].