国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

webpack5搭建react框架-生產(chǎn)環(huán)境配置

這篇具有很好參考價值的文章主要介紹了webpack5搭建react框架-生產(chǎn)環(huán)境配置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

webpack5配置react基礎(chǔ)生產(chǎn)環(huán)境

一、前言

在項目構(gòu)建時不同的環(huán)境下會有不同配置,在前面文章中已經(jīng)使用webpack5配置好了基礎(chǔ)環(huán)境和開發(fā)環(huán)境,但是在生產(chǎn)環(huán)境時有些配置和開發(fā)環(huán)境是不需要的,有些是可以在優(yōu)化的,所以下面繼續(xù)生產(chǎn)環(huán)境的配置。

二、生產(chǎn)環(huán)境配置

1、添加生產(chǎn)環(huán)境基礎(chǔ)配置

首先我們需要在已經(jīng)創(chuàng)建好的文件webpack.prod.js進(jìn)行生產(chǎn)環(huán)境獨(dú)有的配置,然后在引入生產(chǎn)環(huán)境和開發(fā)環(huán)境公用的基礎(chǔ)配置。
修改webpack.prod.js文件,添加生產(chǎn)環(huán)境的基礎(chǔ)配置

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

module.exports = merge(baseConfig, {
  mode: 'production', // 設(shè)置模式為production
})

然后修改package.json文件下的build打包指令,將生產(chǎn)環(huán)境打包文件指向config/webpack.prod.js

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

執(zhí)行 npm run build 命令打包,此時react-refresh/babel會報錯因為熱更新插件在生產(chǎn)環(huán)境的時候應(yīng)該禁用,所以我們先把他注釋掉在執(zhí)行打包命令,此時最最基礎(chǔ)的生產(chǎn)環(huán)境配置就完成了。

webpack5搭建react框架-生產(chǎn)環(huán)境配置
webpack5搭建react框架-生產(chǎn)環(huán)境配置

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

上面完成了生產(chǎn)環(huán)境最基礎(chǔ)的配置,也成功打包,但是不知道打包后的代碼在加載的時候是不是有問題,所以需要借助第三方的服務(wù)插件查看打包后的頁面效果

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

webpack5搭建react框架-生產(chǎn)環(huán)境配置

然后修改Live Server 的root地址為dist,這樣我們就可以直接加載打包后的資源

webpack5搭建react框架-生產(chǎn)環(huán)境配置
webpack5搭建react框架-生產(chǎn)環(huán)境配置

修改好配置后,鼠標(biāo)右鍵選擇index.html文件選擇使用Live Server打開此時就可以直接查看打包效果

webpack5搭建react框架-生產(chǎn)環(huán)境配置

3、添加環(huán)境變量

在打包的時候我們需要區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境(如上面熱更新插件的使用),在不通用的配置下我們可以通過配置文件的拆分實(shí)現(xiàn),在通用配置的時候我們就需要在執(zhí)行打包命令時注入來實(shí)現(xiàn)

使用 cross-env 依賴庫來注入環(huán)境變量,安裝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);

分別執(zhí)行npm run build 和npm run dev查看變量打印的值
webpack5搭建react框架-生產(chǎn)環(huán)境配置
webpack5搭建react框架-生產(chǎn)環(huán)境配置

上面成功注入了在打包過程中環(huán)境變量,有時候我們的項目也需要業(yè)務(wù)中全局變量這個時候可以使用webpack中DefinePlugin插件實(shí)現(xiàn)

修改webpack.base.js 文件增加業(yè)務(wù)中全局變量插件配置

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

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

4、根據(jù)變量配置插件

添加完環(huán)境變量后首先根據(jù)環(huán)境變量去處理不同插件和loader的配置

首先提取出一個判斷生產(chǎn)環(huán)境的函數(shù),修改config/tools.js文件

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

module.exports = {
  isProd
};

修改babel.config.js文件根據(jù)變量處理熱更新插件

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

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

此時在執(zhí)行npm run build指令進(jìn)行打包正常不在報錯。

在開發(fā)環(huán)境我們處理css文件時使用style-loader將解析后的css插入到head標(biāo)簽中進(jìn)行加載方便調(diào)試和樣式熱替換,在生產(chǎn)環(huán)境中我們會將css抽離出單獨(dú)的文件資源并引入使用可以利用緩存配置。下面使用mini-css-extract-plugin插件完成

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

修改webpack.base.js文件,生產(chǎn)環(huán)境下使用mini-css-extract-plugin插件loader開發(fā)環(huán)境下還使用style-loader

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

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          // 生產(chǎn)環(huán)境下使用MiniCssExtractPlugin.loader
          isProd() ? MiniCssExtractPlugin.loader : 'style-loader',
          'css-loader',
        ]
      },
      // 當(dāng)使用多個loader處理模塊時,use為數(shù)組格式,并且loader的執(zhí)行順序為從下到上,從后往前。
      {
        test: /\.less$/,
        use: [
          isProd() ? MiniCssExtractPlugin.loader : 'style-loader',
          'css-loader',
          'less-loader'
        ],
        include: resolve("src"),
      },
    ]
  },
}

修改webpack.prod.js文件,進(jìn)行mini-css-extract-plugin插件調(diào)用并設(shè)置抽離出css文件名等

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

module.exports = merge(baseConfig, {
  plugins: [
    // 調(diào)用抽離插件
    new MiniCssExtractPlugin({
      // 抽離后的資源名稱和存放路徑
      filename: 'static/css/[name].[contenthash:8].css',
      // 非入口的 chunk 文件名稱
      chunkFilename: 'static/css/[name].[contenthash:8].css',
    })
  ]
})

執(zhí)行npm run build 打包命令,查看live-server上的項目效果
webpack5搭建react框架-生產(chǎn)環(huán)境配置
5、代碼壓縮

上面css代碼已經(jīng)被抽離出單獨(dú)文件并且以資源的方式日引入使用,但是這時候我們看dist目錄下已經(jīng)打包好的css文件里面的內(nèi)容沒有被壓縮還是正常展示,在生產(chǎn)環(huán)境上加載資源的大小也影響加載性能。下面我們使用css-minimizer-webpack-plugin插件進(jìn)行壓縮css文件(也可以使用optimize-css-assets-webpack-plugin)

安裝

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

修改webpack.prod.js文件,進(jìn)行css-minimizer-webpack-plugin插件的調(diào)用

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

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

然后執(zhí)行npm run build打包命令,查看打包后的css文件是否壓縮和頁面是否加載正常

webpack5搭建react框架-生產(chǎn)環(huán)境配置

css代碼成功壓縮后,下面來配置js代碼壓縮,其實(shí)當(dāng)webpack設(shè)置模式為production時js文件的代碼會自動進(jìn)行壓縮,但是因為我們上面配置optimization.minimizer后這個壓縮就失效了,所以需要我們再次安裝terser-webpack-plugin插件調(diào)用即可

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

修改webpack.prod.js文件,調(diào)用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,
      })
    ],
  },
})

再次執(zhí)行npm run build命令查看打包后的文件和頁面效果是否正常即可。

三、結(jié)語

使用webpack5配置react的生產(chǎn)環(huán)境的基礎(chǔ)也完成了,但是還有許多可以優(yōu)化的細(xì)節(jié),后面繼續(xù)將可以優(yōu)化的地方加進(jìn)來。文章來源地址http://www.zghlxwxcb.cn/news/detail-412029.html

到了這里,關(guān)于webpack5搭建react框架-生產(chǎn)環(huán)境配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ? React18 環(huán)境搭建項目與運(yùn)行(地址已經(jīng)放Gitee開源--新體系為webpack搭建)

    ? React18 環(huán)境搭建項目與運(yùn)行(地址已經(jīng)放Gitee開源--新體系為webpack搭建)

    記得給個star呀伙伴 Github(https://github.com/NexusLin/NexusReact) Gitee(https://gitee.com/NexusLinNoa/NexusReact) 環(huán)境介紹 1、檢查本地環(huán)境 node版本 18.17.0 檢查node和npm環(huán)境 node -v npm -v 2、安裝yarn npm install -g yarn yarn --version 3、創(chuàng)建一個新的React項目 npx create-react-app ltbreact 4、進(jìn)入并運(yùn)行項目

    2024年04月13日
    瀏覽(24)
  • Webpack5 搭建Vue項目(進(jìn)階版)

    提示:中間隔了好長時間,我胡漢三又回來繼續(xù)更新了?。?!?????? 提示:文章涉及的一些內(nèi)容僅供參考: 大多數(shù)情況下,大家在項目開發(fā)的過程中,基本很少去說讓開發(fā)人員去自助的搭建一個Vue項目。 基本都是使用現(xiàn)成的一些模版項目,直接在上面進(jìn)行一個二次的開發(fā)

    2024年02月09日
    瀏覽(19)
  • webpack5高級配置

    webpack5高級配置

    注意:webpack5基本配置只是打包產(chǎn)出一個html文件?,想要產(chǎn)出多個html就需要進(jìn)行過入口的配置 webpack.common.js 注意:公共文件中的入口需要引入兩個js文件 ?webpack.prod.js 注意:輸出的時候利用[name]根據(jù)輸入的文件名來確定導(dǎo)出的文件名稱! webpack.common.js 注意:針對多個html文件

    2024年02月15日
    瀏覽(43)
  • Webpack5入門到原理20:Vue 腳手架搭建

    package.json .eslintrc.js babel.config.js

    2024年01月24日
    瀏覽(48)
  • Webpack5新手入門簡單配置

    Webpack5新手入門簡單配置

    yarn init -y ? yarn add -D webpack@5.75.0 webpack-cli@5.0.0 說明:寫入下面的一句話 說明:如果沒有安裝webpack腳手架就不能執(zhí)行yarn webpack(webpack-cli) yarn webpack? 說明:為yarn webpack起別名 ?yarn build 說明:注釋寫在了代碼里面了

    2024年02月14日
    瀏覽(27)
  • Webpack5入門到原理3:基本配置

    在開始使用 Webpack 之前,我們需要對 Webpack 的配置有一定的認(rèn)識。 entry(入口) 指示 Webpack 從哪個文件開始打包 output(輸出) 指示 Webpack 打包完的文件輸出到哪里去,如何命名等 loader(加載器) webpack 本身只能處理 js、json 等資源,其他資源需要借助 loader,Webpack 才能解析

    2024年01月20日
    瀏覽(49)
  • 【快速搞定Webpack5】基本配置及開發(fā)模式介紹(二)

    【快速搞定Webpack5】基本配置及開發(fā)模式介紹(二)

    在開始使用 webpack 之前么,我們需要對 Webpack 的配置有一定的認(rèn)識。 1. enty(入口) 指示 webpack 從哪個文件開始打包 2. output(輸出) 指示 webpack 打包完的文件輸出到哪里去,如何命名等 3. loader(加載器) webpack 本身只能處理 js、json 等資源,其他資源需要借助 loader 、 webp

    2024年02月21日
    瀏覽(18)
  • webpack與vue-cli合并配置,打包生產(chǎn)環(huán)境代碼時如何刪除所有的console.log、代碼注釋和debugger

    webpack與vue-cli合并配置,打包生產(chǎn)環(huán)境代碼時如何刪除所有的console.log、代碼注釋和debugger

    本文基于vue-cli 5.0.0,webpack 5.0,TerserWebpackPlugin 最近公司項目開發(fā)上線后,發(fā)現(xiàn)控制臺有很多當(dāng)時測試時打印的信息。但是如果手動刪除然后打包的話工作量太大,而且不利于以后的維護(hù)和debugger。所有必須通過webpack打包時自動幫我們刪除console和注釋。 第一步上網(wǎng)找到webpack關(guān)于

    2024年02月04日
    瀏覽(93)
  • webpack5零基礎(chǔ)入門-2wepack配置項的了解

    webpack5零基礎(chǔ)入門-2wepack配置項的了解

    在使用webpack之前,我們需要對webpack的配置項有一定的認(rèn)識。 1.entry(入口) 指示webpack從哪個文件開始打包 2.output (輸出) 指示webpack打包完的文件輸出到哪里,如何命令等 3.loader(加載器) webpack本身只能處理js、JSON等資源,其他資源需要接觸loader,webpack才能解析 4.plugins(插件)

    2024年03月10日
    瀏覽(25)
  • 《基于 Vue 組件庫 的 Webpack5 配置》2.模塊規(guī)則 module.rule

    配置 module.rules ,創(chuàng)建模塊時,匹配請求的規(guī)則數(shù)組; 可參考 webpack5 指南-管理資源; vue 可參考上述配置; js 使用 webpack babel-loader; css 參考 webpack 加載 CSS。注意 style-loader 和 vue-style-loader 選一個即可,兩者的功能基本一致,只是 vue-style-loader 可用于服務(wù)端渲染 SSR; stylus

    2024年02月11日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包