美文网首页
手动从头搭建react

手动从头搭建react

作者: aaagu1234 | 来源:发表于2022-05-29 08:41 被阅读0次

先安装所有的依赖: 没有cnpm 的 可以找 淘宝镜像
cnpm init -y
cnpm install react@17.0.2 -S
cnpm install react-dom@17.0.2 -S
cnpm install webpack -D
cnpm install webpack-cli -D

cnpm i babel-loader @babel/core @babel/preset-env @babel/preset-react -D
cnpm i html-webpack-plugin -D
cnpm i webpack-dev-server -D
第二部:
创建app/index.js

import React from 'react'
import ReactDOM from 'react-dom'
ReactDOM.render(<div>react </div>, document.getElementById("root"))

创建public/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <title>手动搭建react</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
  </body>
</html>

创建webpack.config.js

const HtmlWebPackPlugin = require('html-webpack-plugin')
module.exports = {
    entry: './app/index.js',
    mode: 'development',
    devtool: 'cheap-module-source-map',
    resolve: {
        extensions: ['*', '.js', '.jsx']  
    },
    module: {
        rules: [
            {
                test: /\.jsx?$/,
                exclude: /node_modules/,   
                use: {
                    loader: 'babel-loader',  
                    options: {
                        babelrc: true,
                        presets: ['@babel/preset-react', '@babel/preset-env'],
                        cacheDirectory: true
                    }
                }
            },
        ]
    },
    devServer: {
        host: '127.0.0.1',
        port: 8080 
    },
    plugins: [
        new HtmlWebPackPlugin({
            template: 'public/index.html',
            filename: 'index.html'
        })

    ]
 
}

对比一下package.json ,缺失的直接复制


{
  "name": "myblue",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "serve": "webpack-dev-server --mode development --open",
    "build": "webpack --mode production",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "devDependencies": {
    "@babel/core": "^7.18.2",
    "@babel/preset-env": "^7.18.2",
    "@babel/preset-react": "^7.17.12",
    "babel-loader": "^8.2.5",
    "html-webpack-plugin": "^5.5.0",
    "webpack": "^5.72.1",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.9.0"
  }
}

可以运行了。
运行:

npm run serve

打包:

npm run build

上面可以跑起来了。
下面继续 css 处理依赖

cnpm install mini-css-extract-plugin -D
cnpm install css-loader -D

MiniCssExtractPlugin 可以单独打包, 但是没有压缩。
webpack.config.js 加入 loader中加入

  {
                test: /\.css$/,
                use:[MiniCssExtractPlugin.loader,'css-loader']
            }
 plugins: [
        new HtmlWebPackPlugin({
            template: 'public/index.html',
            filename: 'index.html'
        }),
        new MiniCssExtractPlugin({
            // Options similar to the same options in webpackOptions.output
            // both options are optional
            filename: 'static/css/[name].[contenthash:8].css',
            chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',
          }),
          new CssMinimizerPlugin() 

    ]

相关文章

网友评论

      本文标题:手动从头搭建react

      本文链接:https://www.haomeiwen.com/subject/wawiprtx.html