webpack5搭建react框架-生产环境配置

webpack5配置react基础生产环境

一、前言

在项目构建时不同的环境下会有不同配置,在前面文章中已经使用webpack5配置好了基础环境开发环境,但是在生产环境时有些配置和开发环境是不需要的,有些是可以在优化的,所以下面继续生产环境的配置。

二、生产环境配置

1、添加生产环境基础配置

首先我们需要在已经创建好的文件webpack.prod.js进行生产环境独有的配置,然后在引入生产环境和开发环境公用的基础配置。
修改webpack.prod.js文件,添加生产环境的基础配置

// webpack.prod.js
const { resolve } = require('./tools');
const { merge } = require('webpack-merge'); // 引入合并方法
const baseConfig = require('./webpack.base'); // 引入基础配置

module.exports = merge(baseConfig, {
  mode: 'production', // 设置模式为production
})

然后修改package.json文件下的build打包指令,将生产环境打包文件指向config/webpack.prod.js

  // package.json
  "scripts": {
    "build": "webpack --config config/webpack.prod.js",
  },

执行 npm run build 命令打包,此时react-refresh/babel会报错因为热更新插件在生产环境的时候应该禁用,所以我们先把他注释掉在执行打包命令,此时最最基础的生产环境配置就完成了。

在这里插入图片描述
在这里插入图片描述

2、安装Live Server 插件查看效果

上面完成了生产环境最基础的配置,也成功打包,但是不知道打包后的代码在加载的时候是不是有问题,所以需要借助第三方的服务插件查看打包后的页面效果

在vscode插件商店安装Live Server 插件

在这里插入图片描述

然后修改Live Server 的root地址为dist,这样我们就可以直接加载打包后的资源

在这里插入图片描述
在这里插入图片描述

修改好配置后,鼠标右键选择index.html文件选择使用Live Server打开此时就可以直接查看打包效果

在这里插入图片描述

3、添加环境变量

在打包的时候我们需要区分开发环境和生产环境(如上面热更新插件的使用),在不通用的配置下我们可以通过配置文件的拆分实现,在通用配置的时候我们就需要在执行打包命令时注入来实现

使用 cross-env 依赖库来注入环境变量,安装cross-env

npm i cross-env -D

修改package.json 文件下打包指令

  // package.json
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack --config config/webpack.prod.js",
    "dev": "cross-env NODE_ENV=development webpack-dev-server -c config/webpack.dev.js"
  },

然后在webpack.base.js 文件下添加打印

console.log(process.env.NODE_ENV, 1111111111);

分别执行npm run build 和npm run dev查看变量打印的值
在这里插入图片描述
在这里插入图片描述

上面成功注入了在打包过程中环境变量,有时候我们的项目也需要业务中全局变量这个时候可以使用webpack中DefinePlugin插件实现

修改webpack.base.js 文件增加业务中全局变量插件配置

// webpack.base.js
const webpack = require('webpack');

module.exports = {
  plugins: [
    new webpack.DefinePlugin({ // 调用插件
      'process.env': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV),
      },
    }),
  ]
}

4、根据变量配置插件

添加完环境变量后首先根据环境变量去处理不同插件和loader的配置

首先提取出一个判断生产环境的函数,修改config/tools.js文件

// tools.js
function isProd() {
  return process.env.NODE_ENV === 'production';
}

module.exports = {
  isProd
};

修改babel.config.js文件根据变量处理热更新插件

// babel.config.js
const { isProd } = require('./config/tools');

module.exports = {
  plugins: [
    !isProd() && require.resolve('react-refresh/babel')
  ].filter(Boolean)
}

此时在执行npm run build指令进行打包正常不在报错。

在开发环境我们处理css文件时使用style-loader将解析后的css插入到head标签中进行加载方便调试和样式热替换,在生产环境中我们会将css抽离出单独的文件资源并引入使用可以利用缓存配置。下面使用mini-css-extract-plugin插件完成

// 安装
npm i mini-css-extract-plugin -D

修改webpack.base.js文件,生产环境下使用mini-css-extract-plugin插件loader开发环境下还使用style-loader

// webpack.base.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 引入抽离css插件
const { isProd } = require('./tools');

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          // 生产环境下使用MiniCssExtractPlugin.loader
          isProd() ? MiniCssExtractPlugin.loader : 'style-loader',
          'css-loader',
        ]
      },
      // 当使用多个loader处理模块时,use为数组格式,并且loader的执行顺序为从下到上,从后往前。
      {
        test: /\.less$/,
        use: [
          isProd() ? MiniCssExtractPlugin.loader : 'style-loader',
          'css-loader',
          'less-loader'
        ],
        include: resolve("src"),
      },
    ]
  },
}

修改webpack.prod.js文件,进行mini-css-extract-plugin插件调用并设置抽离出css文件名等

// webpack.prod.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 引入抽离css插件

module.exports = merge(baseConfig, {
  plugins: [
    // 调用抽离插件
    new MiniCssExtractPlugin({
      // 抽离后的资源名称和存放路径
      filename: 'static/css/[name].[contenthash:8].css',
      // 非入口的 chunk 文件名称
      chunkFilename: 'static/css/[name].[contenthash:8].css',
    })
  ]
})

执行npm run build 打包命令,查看live-server上的项目效果
在这里插入图片描述
5、代码压缩

上面css代码已经被抽离出单独文件并且以资源的方式日引入使用,但是这时候我们看dist目录下已经打包好的css文件里面的内容没有被压缩还是正常展示,在生产环境上加载资源的大小也影响加载性能。下面我们使用css-minimizer-webpack-plugin插件进行压缩css文件(也可以使用optimize-css-assets-webpack-plugin)

安装

npm install css-minimizer-webpack-plugin --save-dev

修改webpack.prod.js文件,进行css-minimizer-webpack-plugin插件的调用

// webpack.prod.js
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); // 引入css压缩插件

module.exports = merge(baseConfig, {
  optimization: {
    minimizer: [
      new CssMinimizerPlugin(),
    ],
  },
})

然后执行npm run build打包命令,查看打包后的css文件是否压缩和页面是否加载正常

在这里插入图片描述

css代码成功压缩后,下面来配置js代码压缩,其实当webpack设置模式为production时js文件的代码会自动进行压缩,但是因为我们上面配置optimization.minimizer后这个压缩就失效了,所以需要我们再次安装terser-webpack-plugin插件调用即可

npm install terser-webpack-plugin --save-dev

修改webpack.prod.js文件,调用terser-webpack-plugin插件

// webpack.prod.js
const TerserPlugin = require("terser-webpack-plugin"); // 引入js压缩插件

module.exports = merge(baseConfig, {
  optimization: {
    minimizer: [
      new TerserPlugin({
        // 传入删除注释配置
        terserOptions: {
          format: {
            comments: false,
          },
        },
        extractComments: false,
      })
    ],
  },
})

再次执行npm run build命令查看打包后的文件和页面效果是否正常即可。

三、结语

使用webpack5配置react的生产环境的基础也完成了,但是还有许多可以优化的细节,后面继续将可以优化的地方加进来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 为了搭建一个React语言的h5项目框架,您需要以下步骤: 1. 安装 Node.js 和 npm:Node.jsJavaScript 的运行环境,npm 是 JavaScript 包管理器。 2. 创建一个文件夹,作为您的项目的根目录。 3. 在命令行中,进入您的项目目录,然后使用以下命令初始化项目: ``` npm init -y ``` 4. 安装 React,并作为项目的依赖项: ``` npm install react react-dom --save ``` 5. 创建一个名为 "src" 的文件夹,用于存储您的 React 组件。 6. 创建一个名为 "index.js" 的文件,用于导出您的项目的入口组件。 7. 创建一个 HTML 文件,用于渲染您的 React 组件。 8. 在命令行中,运行以下命令以启动项目: ``` npm start ``` 现在您的 React h5 项目框架已经创建好了!您可以开始编写 React 组件并逐步完善您的项目。 ### 回答2: 要搭建一个React语言的H5项目框架,我们需要遵循以下步骤: 第一步,安装Node.js。在官网上下载并安装Node.js,它提供了NPM(Node Package Manager)管理工具,用于安装和管理第三方模块。 第二步,创建项目文件夹。在合适的位置创建一个文件夹,作为项目的根目录。 第三步,初始化项目。在命令行中进入项目根目录,执行命令 "npm init",按照提示填写项目的基本信息,例如名称、版本号等。这将会在项目根目录创建一个package.json文件,用于记录项目的依赖和配置信息。 第四步,安装React和相关依赖。在命令行中执行命令 "npm install react react-dom",这将会安装ReactReact DOM模块作为我们项目的依赖。 第五步,配置Babel。在命令行中执行命令 "npm install babel-loader @babel/core @babel/preset-react",这将会安装Babel及其相关模块,用于将React语法转换为浏览器可以理解的代码。 第六步,创建并配置Webpack。在命令行中执行命令 "npm install webpack webpack-cli webpack-dev-server html-webpack-plugin",这将安装Webpack和相关模块,用于打包和开发服务器。 第七步,创建并配置基本文件。在项目根目录下创建一个src文件夹,用于存放React组件和相关资源文件。创建一个index.js文件作为入口文件,引入ReactReactDOM模块,并渲染一个根组件。创建一个index.html文件,用于作为项目的入口页面。 第八步,配置Webpack。在项目根目录下创建一个webpack.config.js文件,配置Webpack的入口、输出、加载器等信息。 第九步,启动项目。在命令行中执行命令 "npm run start",这将会启动Webpack Dev Server,打开浏览器并访问 http://localhost:8080,就可以看到React H5项目的效果了。 以上就是简单搭建一个React语言的H5项目框架的步骤。当然,这只是一个最基本的框架,具体的配置还可以根据项目需求进行进一步调整和扩展。 ### 回答3: 搭建一个基于React语言的H5项目框架可以参考以下步骤: 1. 环境搭建:首先确保你的电脑已经安装了Node.js和npm包管理工具。可以通过在终端运行命令`node -v`和`npm -v`来检查是否安装成功。 2. 创建项目目录:在适当的位置创建一个空的项目文件夹,并进入该文件夹。 3. 初始化项目:在终端运行命令`npm init`来初始化一个新的npm项目。按照提示完成项目的相关配置,例如项目名称、版本号、作者等。 4. 安装React相关依赖:运行命令`npm install --save react react-dom`来安装React及其DOM渲染的依赖。 5. 安装开发工具:运行命令`npm install --save-dev webpack webpack-cli webpack-dev-server`来安装Webpack及其相关开发工具。 6. 创建配置文件:在项目根目录下创建一个`webpack.config.js`文件,并配置Webpack的基本设置。例如设置入口文件、输出文件、解析规则等。 7. 创建React组件:在项目目录下创建一个`src`文件夹,并在其中创建一个`App.js`文件作为项目的根组件。编写React代码,可以使用函数组件或类组件来定义你的页面结构。 8. 创建入口文件:在`src`文件夹下创建一个`index.js`文件作为React应用的入口文件。在该文件中导入根组件并使用`ReactDOM.render()`方法将其渲染到页面中。 9. 配置启动命令:在`package.json`文件中的`scripts`属性中新增一个`start`命令,设置为`"webpack-dev-server --open"`。这将启动Webpack的开发服务器,并自动打开项目页面。 10. 启动项目:在终端运行命令`npm start`来启动项目,你将在浏览器中看到React组件渲染的页面。 这是一个简单的React语言的H5项目框架搭建流程。根据项目的需求和复杂性,你可能还需要进行更多的配置和安装依赖来完善项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值