webpack搭建react开发环境

这篇具有很好参考价值的文章主要介绍了webpack搭建react开发环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方文档

中文官网: https://www.webpackjs.com/ 文档更新稍有不及时
英文官网: https://webpack.js.org/

安装

  1. 项目初始化
npm init --yes 
  1. 安装webpack
npm install --save-dev webpack 
  1. 使用webpack 命令
默认入口为 src/index.js
默认出口为 dist/main.js
  "scripts": {
    "webpack": "webpack",
  }
  1. 使用config配置文件
默认读取当前 当前目录下 webpack.config.js
可以通过 --config 属性指定读取某一个配置文件
  "scripts": {
    "default": "webpack"
    "build": "webpack --config ./config/webpack.pro.config.js",
  },

注:建议使用项目依赖安装而非全局安装,不同项目依赖的版本不相同

config配置文件使用

Mode 模式

通过选择 development 或 production 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

module.exports = {
  mode: 'production'
};

Entry 入口配置

入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

  1. 单入口
module.exports = {
  entry: './path/to/my/entry/file.js'
};

OutPut 出口配置

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程:

1.单出口

const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};
  1. 多入口多出口
{
  entry: {
    app: './src/app.js',
    search: './src/search.js'
  },
  output: {
    filename: '[name].js',
    path: __dirname + '/dist'
  }
}

Loader

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

解析import 样式文件

  module: {
    rules: [
      //解析css
      {
        test: /\.(css)$/,
        exclude: /(node_modules)/,
        use: ["style-loader", "css-loader"],
        // loader的使用方式从后往前
      },
      // 解析less
      {
        test: /\.(less)$/,
        exclude: /(node_modules)/,
        use: [
          "style-loader",
          {
            loader: "css-loader",
            options: {
              modules: true, // 样式模块化
            },
          },
          "less-loader",
        ],
      },
    ],
  }

解析图片

  module: {
    rules: [
     {
        test: /\.(png|jpg|jpeg)$/,
        exclude: /(node_modules)/,
        type: "asset", // 根据图片的尺寸判断是移动文件 还是变成base64
        parser: {
          dataUrlCondition: {
            maxSize: 4 * 1024,
          },
        },
        // type: 'asset/resource', //将图片处理移动
        // type: "asset/inline",   // 变成base64
        // use:["url-loader","file-loader"]
      },
    ],
  }

解析jsx

  module: {
    rules: [
     // 解析react jsx
      {
        test: /\.(js|jsx)$/, // 要使用的文件后缀
        exclude: /(node_modules|bower_components)/, // 取出某些目录不检测
        use: {
          loader: "babel-loader", //使用loader 解析js文件
          options: {
            // presets: ["@babel/preset-env", "@babel/preset-react"],
            presets: ["@babel/preset-env"],
            plugins: ["@babel/plugin-transform-react-jsx"]
          },
        },
      },
    ],
  }

loader 特点

  • loader 支持链式传递。能够对资源使用流水线(pipeline)。一组链式的 loader 将按照相反的顺序执行。loader 链中的第一个 loader 返回值给下一个 loader。在最后一个 loader,返回 webpack 所预期的 JavaScript。
  • loader 可以是同步的,也可以是异步的。
  • loader 运行在 Node.js 中,并且能够执行任何可能的操作。
  • loader 接收查询参数。用于对 loader 传递配置。
  • loader 也能够使用 options 对象进行配置。
  • 除了使用 package.json 常见的 main 属性,还可以将普通的 npm 模块导出为 loader,做法是在 package.json 里定义一个 loader 字段。
  • 插件(plugin)可以为 loader 带来更多特性。
  • loader 能够产生额外的任意文件。
  • loader 通过(loader)预处理函数,为 JavaScript 生态系统提供了更多能力。 用户现在可以更加灵活地引入细粒度逻辑,例如压缩、打包、语言翻译和其他更多。

插件(plugins)

插件是 webpack 的支柱功能。webpack 自身也是构建于,你在 webpack 配置中用到的相同的插件系统之上!
插件目的在于解决 loader 无法实现的其他事。

html管理插件

const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'main.js',
    path: path.resolve(__dirname, '../dist'),
    clean: true, // 打包之前将原先的dist文件删除
  },
  mode: "production",
  // 插件
  plugins: [
    new HtmlWebpackPlugin({
      title: "管理输出",
      template: "./public/index.html",
      filename: "index.html",
      inject: "body",
    }),
  ],
 }

本地服务器配置

开发阶段通过本地服务器实现代理等一些列功能文章来源地址https://www.toymoban.com/news/detail-465850.html

  1. 安装
 npm install webpack-dev-server -D
  1. 配置config文件
devServer: {
    static: "./dist", // 本地服务器访问的目录
    port: 5201, // 端口号
    proxy: {},  // 代理
  }
  1. 运行
{
  "scripts": {
    "dev": "webpack server --config ./config/webpack.dev.config.js",
  }
}

到了这里,关于webpack搭建react开发环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建React Native开发环境

    node.js官网 需要确定自己安装的版本是否是12版本以上 node -v npm install -g yarn 这是官网推荐的安装地址: android studio 国内用户可能无法打开官方链接,请自行使用搜索引擎搜索可用的下载链接。安装界面中选择\\\"Custom\\\"选项,确保选中了以下几项: 所以需要我们自己想办法来安装

    2024年02月04日
    浏览(30)
  • React 新版官方文档 (一) useReducer 用法详解

    useReducer 是一个可以让你向组件中添加 reducer 的 Hook 基本用法 比 useState 多了一个处理函数,该函数可以根据不同的分发状态来对应的改变状态 注意:state 不可修改 不能这样写, reducer 函数应当返回一个新对象 不要重新执行初始函数 第一种写法会导致每次渲染时候都调用

    2024年02月13日
    浏览(29)
  • 安信可Ai-M61-32SU开发板开发环境搭建和文档获取

            安信可公司专注于WiFi、蓝牙、LoRa和雷达等无线物联网通信模块或MCU。近期安信可官方论坛举办很多的送开发板活动,获取方式非常简单且免费,审核快速且合理,收到的开发板也是做工精美,可用性和可移植性非常大。安信可论坛地址:安信可论坛         我获得

    2024年01月18日
    浏览(29)
  • 苍穹外卖项目开发指南:项目概述、环境搭建、Swagger接口文档生成

    详细介绍苍穹外卖项目的开发流程,包括软件开发整体介绍、项目概述、环境搭建、Swagger接口文档生成、Nginx反向代理和负载均衡配置等内容,帮助开发人员快速上手项目开发。

    2024年02月10日
    浏览(35)
  • 手把手教你搭建 Webpack 5 + React 项目

    在平时工作中,为减少开发成本,一般都会使用脚手架来进行开发,比如 create-react-app 。脚手架都会帮我们配置好了 webpack,但如果想自己搭建 webpack 项目要怎么做呢?这边文章将介绍如何使用 webpack 5 来搭建 react 项目,项目地址在文末。 1.1 Webpack 的好处 试想在不使用任何打

    2024年02月08日
    浏览(31)
  • Webpack5入门到原理19:React 脚手架搭建

    package.json .eslintrc.js babel.config.js webpack.config.js 修改运行指令 package.json

    2024年01月21日
    浏览(38)
  • 用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化

    一. 简述 二. Fork 项目 三. 搭建开发环境 四. 初始化皮肤项目 五. 添加相关依赖 六. 预览 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过,项目地址:xxl-job。它是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 该项目中的页面是使用

    2024年02月01日
    浏览(27)
  • react native android环境搭建,使用夜神模拟器进行开发(适用于0.73+版本)

    前言 本文基于:“react-native” : “^0.73.0” 1.安装 Node Node.js,下载时选择 = 18 版本 2.下载并安装 JDK Java SE Development Kit (JDK),下载时选择 17 版本 安装 验证是否安装成功 打开命令提示符输入 javac -version 回车 3.安装 Android Studio 下载并安装 Android Studio ,获取编译 Android 应用所需

    2024年01月23日
    浏览(47)
  • 基于webpack开发react-cli

    在前面的章节中我们学习了 webpack 的基础配置(五大核心属性),以及一些高级优化配置( source map、Tree Shaking、 HMR、Code Split 等),并且分别开发了 webpack.dev.js (开发环境配置),和 webpack.prod.js (生产环境配置)。 这一章节我们将两个配置合并为一个整体配置,内部差异通过

    2024年02月09日
    浏览(30)
  • 机器人强化学习环境mujoco官方文档学习记录(一)——XML

    鉴于研究生课题需要,开始在mujoco中配置仿真环境。而官方文档中各种对象参数纷繁复杂,且涉及mujoco底层计算,不便于初学者进行开发设计。因此本文将MJCF模型的常用对象参数进行总结。 本文档仅供学习参考,如有问题欢迎大家学习交流。 本章是MuJoCo中使用的MJCF建模语言

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包