webpack4+react项目搭建(二)

作者: 幻城之雪 | 来源:发表于2023-04-30 16:06 被阅读0次

1.配置插件clean-webpack-plugin, html-webpack-plugin

1) 安装

npm install clean-webpack-plugin html-webpack-plugin -D

2)配置

build/webpack.common.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); 
function webpackCommonConfigCreator(options){ 
   ... 
   return { 
     ... 
     plugins: [ 
     + new HtmlWebpackPlugin(), 
     + new CleanWebpackPlugin({ 
     +     cleanOnceBeforeBuildPatterns: [path.resolve(process.cwd(), "dist/")] 
     + }) 
     ]
} }

3)更改入口文件

src/index.js 
var ele = document.createElement('div');
ele.innerHTML = "hello webpack"; 
document.body.appendChild(ele);

执行npm run start

2.配置react

1) 安装react

npm install react react-dom

2)安装babel

npm install @babel/core @babel/cli @babel/preset-env --save -dev
npm install @babel/preset-react --save -dev
npm install babel-loader --save -dev

3)配置babel-loader


build/webpack.common.js
... 
function webpackCommonConfigCreator(options){ 
      ... 
      return { 
           ... 
          + module: { 
          + rules: [ 
          + { 
          +    test: /\.(js|jsx)$/, 
          +    include: path.resolve(__dirname, "../src"), 
          +    use: [
          +    { 
          +       loader: "babel-loader", 
          +       options: { 
          +           presets: ['@babel/preset-react'], 
          +       } 
          +    } 
          +   ] 
          + } 
          + ] 
      + }, 
      ... 
    }
}

4)准备基本的react文件


src/index.js
import React from 'react'; 
import ReactDom from 'react-dom';
import App from './App.js'; 
ReactDom.render(<App />, document.getElementById('root'));
src/App.js
import React from 'react'; 
function App(){ 
  return ( <div> hello react </div> ) 
}     
export default App;

5)创建html模板

创建src/pages/index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
  <title>react webpack</title> 
</head> 
<body> 
  <div id="root"></div> 
</body>
</html>

6)添加html插件配置

... 
function webpackCommonConfigCreator(options){ 
   ... 
   return { 
     ... 
     plugins: 
     [ 
     - new HtmlWebpackPlugin(), 
     + new HtmlWebpackPlugin({ 
     +    template: path.resolve(__dirname, "../public/index.html") 
     + }), 
     ... 
] } }

npm run start 启动本地服务, 编译正常

3.React模块热替换

1)安装loader

npm install react-hot-loader --save-dev

2)配置loader

build/webpack.common.js
 ...
 function webpackCommonConfigCreator(options){ 
     ... 
    return { 
       ... 
       module: { 
           rules: [ { 
               test: /\.(js|jsx)$/, 
               include: path.resolve(__dirname, "../src"), 
               use: [ {  
                   loader: "babel-loader", 
                   options: { 
                       presets: ['@babel/preset-react'], 
               +       plugins: ["react-hot-loader/babel"], 
                   } 
               } ]
           } ]
       }, 
       ... 
    }

 }

3)修改react代码


src/App.js
+ import {hot} from 'react-hot-loader/root';
   ... 
   export default hot(App);

4)开启webpackDevServer热加载

config/webpack.dev.js
... 
const config = { 
    devServer: { 
        contentBase: path.join(__dirname, "../dist"), 
     +  hot: true 
   } 
} 
...

相关文章

网友评论

    本文标题:webpack4+react项目搭建(二)

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