kd-cloud-web / Blog

一群人, 关于前端, 做一些有趣的事儿
13 stars 1 forks source link

react + ts 项目模板搭建 #55

Open zzkkui opened 4 years ago

zzkkui commented 4 years ago

react + ts 模板

npm init(yarn init)

yarn init -y

安装 webpack(4.x)

yarn add webpack webpack-cli webpack-merge webpack-dev-server --dev

安装 html-webpack-plugin

yarn add html-webpack-plugin --dev

配置 html-webpack-plugin

new HtmlWebpackPlugin({
  template: 'public/index.html',
  inject: true,
  minify: {
    collapseWhitespace: true,
    collapseBooleanAttributes: true,
    collapseInlineTagWhitespace: true,
    removeComments: true,
    removeRedundantAttributes: true,
    removeScriptTypeAttributes: true,
    removeStyleLinkTypeAttributes: true,
    minifyCSS: true,
    minifyJS: true,
    minifyURLs: true,
    useShortDoctype: true,
  },
})

安装 clean-webpack-plugin

yarn add clean-webpack-plugin --dev

配置 optimization

webpack3版本是通过配置CommonsChunkPlugin插件来抽离公共的模块。webpack4版本,官方废弃了CommonsChunkPlugin,而是改用配置optimization.splitChunks的方式,更加方便。

配置 loader

yarn add style-loader css-loader less less-loader file-loader url-loader --dev

MiniCssExtractPlugin:打包单独的css文件

yarn add mini-css-extract-plugin --dev
yarn add postcss postcss-loader autoprefixer postcss-flexbugs-fixes postcss-normalize postcss-preset-env postcss-safe-parser --dev

在根目录新建postcss.config.js

module.exports = {
  plugins: [
    require('autoprefixer')
  ],
}

其他插件

  1. ManifestPlugin:用于生成资产清单
  2. WebpackBar:用于优化进度条
  3. FriendlyErrorsPlugin:优化error信息
  4. CopyPlugin:静态文件拷贝
  5. CaseSensitivePathsPlugin:路径有误相关
  6. CompressionPlugin:代码压缩
  7. BundleAnalyzerPluginSizePluginSpeedMeasurePlugin:项目的打包分析相关

安装 react

yarn add react react-dom

使用babel 7

yarn add babel-loader @babel/preset-react @babel/preset-env @babel/core core-js --dev

配置 .babelrc

{
  "presets": [
    [
      "@babel/preset-env",
      {
        // 给文件自动添加polyfill
        "useBuiltIns": "usage",
        // 配合 useBuiltIns: usage 使用
        "corejs": 3,
        "modules": "auto",
      }
    ],
    "@babel/preset-react"
  ]
}

其他 babel 插件

使用 typescript

安装 typescript

yarn add typescript --dev

初始化 typescript 配置文件

tsc --init

安装 @babel/preset-typescript

yarn add @babel/preset-typescript --dev

安装 ForkTsCheckerWebpackPlugin

使用 eslint

安装

yarn add eslint eslint-loader --dev

eslint 初始化(根据需要初始化 eslint 配置)

eslint init

eslint --init 可以交互式的生成需要的 eslint 配置和安装一些需要的依赖包

结合Prettier和ESLint来规范代码

其他eslint插件

commit 前校验代码

yarn add husky lint-staged --dev

修改 package.json

"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,tsx,js,jsx}": [
      "npm run eslint",
      "prettier .prettierrc.js --write",
      "git add"
    ]
  }

参考:

热更新

jest

安装

yarn add jest babel-jest @babel/preset-env @babel/preset-react react-test-renderer --dev

生成配置

jest --init

可以根据官方提供的配置属性来定制化配置

enzyme

并通过 jQuery 风格的方式进行DOM 处理,开发体验十分友好。可转换react组件

yarn add enzyme enzyme-adapter-react-16 --dev

jest-enzyme

enzyme 的断言库,增加可读性,简化测试代码

yarn add jest-enzyme --dev

enzyme vs react-testing-library

enzyme 更适合测试实例方法,而react-testing-library更侧重测试DOM,专注于用户行为。目前官方脚手架使用的 react-testing-library

其他相关