【React + Typescript】使用WebPack包管理、各种扩展插件组成的初始模板,开源协议:CC-BY-4.0

React + Typescript + Webpack 模板

  • 模板展示
  • 项目结构
  • 使用的部分扩展包
  • 页面配置代码
    • Layout 公共容器组件
    • 路由Js
    • package.json
  • 开源模板下载
  • TIP

模板展示

【React + Typescript】使用WebPack包管理、各种扩展插件组成的初始模板,开源协议:CC-BY-4.0_第1张图片

项目结构

【React + Typescript】使用WebPack包管理、各种扩展插件组成的初始模板,开源协议:CC-BY-4.0_第2张图片

使用的部分扩展包

System
├── Plugin
│ ├── file-loader | 在处理图片文件时,Webpack 会将它们复制到输出目录并生成一个哈希值文件名
│ ├── style-loader && css-loader | Webpack 将会使用 css-loader 解析 CSS 文件,并使用 style-loader 将其转化为可应用的样式
│ ├── @babel/preset-typescript | 将 TypeScript 代码转换为 JavaScript 代码
│ └── @babel/core: “^7.23.5”
│ └── @babel/preset-typescript: “^7.23.3”
│ └── @types/styled-components: “^5.1.32”
│ └── @typescript-eslint/eslint-plugin: “^6.4.0”
│ └── eslint扩展全家桶
│ └── customize-cra: “^1.0.0”
│ └── react-app-rewired: “^2.2.1”
│ └── customize-cra: “^1.0.0”

页面配置代码

Layout 公共容器组件

import React, { ReactNode } from "react";
import CCV4 from "../cc-by-4.0"

interface LayoutProps {
  children: ReactNode;
}

const Layout: React.FC<LayoutProps> = ({ children } : any) => {
  const layoutStyle: React.CSSProperties = {
    minHeight: "100vh",
    display: "flex",
    flexDirection: "column",
  };
  const mainStyle: React.CSSProperties = {
    backgroundColor: `rgb(248,248,248)`,
    flex: 1,
  };
  const mainFooter: React.CSSProperties = {
    padding: "0 50px",
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    height: "50px",
    lineHeight: "50px"
  };

  return (
     <div style={layoutStyle}>
      <header>header</header>
      <main style={mainStyle}>{children}</main>
      <footer style={mainFooter}>
        <CCV4></CCV4>
      </footer>
    </div>
  );
};

export default Layout;

路由Js

import React, { Fragment, Component } from "react";
import Home from "../pages/Home/home";
import { BrowserRouter, Route, Routes } from "react-router-dom";

export default class index extends Component {
  render() {
    return (
      <Fragment>
        <BrowserRouter>
          <Routes>
            <Route path="/" element={<Home />} />
          </Routes>
        </BrowserRouter>
      </Fragment>
    );
  }
}

package.json

{
  "name": "blog-react-typescript",
  "version": "1.0.0",
  "author": "starlight-fungus || 東方幻想郷",
  "private": true,
  "dependencies": {
    "@babel/eslint-parser": "^7.23.3",
    "@babel/preset-react": "^7.23.3",
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.2",
    "@types/node": "^16.18.66",
    "@types/react": "^18.2.39",
    "@types/react-dom": "^18.2.17",
    "babel-loader": "^9.1.3",
    "css-loader": "^6.8.1",
    "file-loader": "^6.2.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router": "4.3.1",
    "react-router-dom": "^6.20.0",
    "react-scripts": "5.0.1",
    "style-loader": "^3.3.3",
    "styled-components": "^6.1.1",
    "typescript": "^5.3.2",
    "web-vitals": "^2.1.4",
    "webpack": "^5.89.0",
    "webpack-cli": "^5.1.4"
  },
  "scripts": {
    "start": "react-app-rewired start",
    "webpack-build": "webpack --config webpack.config.js",
    "build-production": "react-app-rewired build mode --production"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.23.5",
    "@babel/preset-env": "^7.23.5",
    "@babel/preset-typescript": "^7.23.3",
    "@types/styled-components": "^5.1.32",
    "@typescript-eslint/eslint-plugin": "^6.4.0",
    "customize-cra": "^1.0.0",
    "eslint": "^8.0.1",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-standard-with-typescript": "^40.0.0",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "react-app-rewired": "^2.2.1"
  }
}

开源模板下载

React + TypeScript + Webpack => 便捷模板项目(配置完毕)

TIP

本项目使用 cc by 4.0 协议,项目可以随意使用,若出现任何法律纠纷,与项目作者无关

你可能感兴趣的:(其他,react.js,typescript,webpack)