从零开始搭建webpack+react+redux项目

本文详细介绍了从零开始搭建一个使用webpack4、react 16、redux、react-router和axios的项目过程,包括项目准备、新建、配置webpack、实现react功能以及项目总结。重点讲述了webpack的配置,如入口、出口、rules、plugin、optimization和devServer的设置,以及如何结合react、redux和react-router创建应用。
摘要由CSDN通过智能技术生成

前段时间做了一个react项目,现在总结一下项目搭建的过程。

1. 准备

动手之前,我们首先要想好要用到的技术栈。我的项目使用了webpack4+react 16+redux+react-redux+react-router的技术栈,网络请求使用axios库,为了书写方便,css使用scss预处理器。
然后需要考虑项目打包出来最后的目录结构是什么样。我们希望项目最后打包出来是这个样子的:
在这里插入图片描述
结构很清晰,其中react-test是项目名,下面css/images/js三个文件夹分别存放css、图片和js文件,api文件夹存放的是mock的接口数据,index.html是入口页面。
接下来,就让我们朝着这个目标前进吧!

2. 新建项目

新建文件夹命名为react-test,进入文件夹,命令行执行npm init,一路enter下去(也可以选择性的填一些内容),完成之后文件夹里面会出现package.json文件。然后安装项目的依赖包:

  • webpack相关:webpack、webpack-cli
  • react相关: react、react-dom、redux、react-redux、react-redux、redux-thunk
  • 网络请求相关: axios
  • babel相关:…
  • css相关:postcss-loader、node-sass、sass-loader、css-loader
  • 文件相关:url-loader
  • webpack插件:clean-webpack-plugin、html-webpack-plugin、mini-css-extract-plugin、copy-webpack-plugin、webpack-css-sprite。

这里省略了一些包,具体见文末链接。
在项目根目录下新建文件和文件夹,项目最终的目录结构为:
在这里插入图片描述
其中dist存放打包后的文件,node_modules存放项目引用的包,这两个为自动生成,其他文件及文件夹的作用分别是:

  • src:存放项目源码
  • webpack:存放webpack的配置项
  • .babelrc:babel的配置文件
  • postcss.config.js:postcss的配置文件
  • webpack.config.js:webpack入口配置文件

3. 配置webpack

在package.json的script中添加四条命令:

"pro": "set NODE_ENV=production&&webpack",
"macpro": "export NODE_ENV=production&&webpack",
"dev": "set NODE_ENV=development&&webpack-dev-server",
"macdev": "export NODE_ENV=development&&webpack-dev-server"

前两句话分别对应Windows和Mac下生产环境打包命令,先将环境设为生产环境,然后运行webpack;后两句对应Windows和Mac下开发环境的打包命令,先将环境设置为开发环境,然后起一个服务器,webpack起服务器在后面会讲到。
这样在命令行中运行npm run dev或者npm run pro就可以运行生产或开发环境下的webpack了。生产环境下webpack会起一个服务器并打开浏览器显示页面;开发环境会生成dist文件夹。
webpack.config.js的内容为:

let entry = require('./webpack/entry.js');
let output = require('./webpack/output.js');
let rules = require('./webpack/rules.js');
let plugins = require('./webpack/plugins.js');
let optimization = require('./webpack/optimization');
let devServer = require('./webpack/devServer.js');

const ENV = process.env.NODE_ENV.split('::');

const projectInfo = {
    dirname: __dirname,
    name: 'reactTest',
    mode: ENV[0]
}

module.exports = {
    mode: projectInfo.mode,
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值