最新要闻
- 获11年来最大营收增幅照裁不误:IBM宣布将裁员3900人
- 世界快讯:苹果官网开售Mac Studio“锁具套装”:一个密码锁卖到548元
- 世界观察:为啥特斯拉疯狂降价到20多万 利润依然最高?官方揭秘真相
- 焦点!三星Galaxy S23 Ultra拍摄样张流露:30X变焦效果比S22 Ultra 20X更清晰
- 微速讯:RTX 4060将至:TGP功耗160W 可能采用传统8PIN供电
- 重点聚焦!影院回应《流浪地球2》改播《满江红》引热议:设备故障不能放
- 天天视点!全球数万用户遭波及:微软终于修复OneDrive等服务宕机问题
- 快资讯:Intel新款锐炫显卡现身:16 Xe核心 比A770弱42%
- 快资讯丨你为啥还不升级Win11?微软:1月31日停售Windows 10
- 世界速递!腾讯NVIDIA达成深度合作:打造低延迟超大分辨率渲染平台
- 当前视点!手机Galaxy S23系列手机保护壳曝光:独占功能 可滑动解锁
- 全球聚焦:女子零下14度观影被冻到扶墙退场 网友:这是5D电影 身临其境
- 天天视讯!2023春节档总票房突破50亿!有望冲击史上最强春节档
- 世界短讯!向Redmi Note 12 Pro极速版看齐!小米Poco X5 Pro即将发布:骁龙778G配1亿像素主摄
- 世界热消息:安徽一电竞酒店装30块RTX 4090显卡:梦幻装备 玩了回不去
- 世界热讯:带薪撸猫 女子过年不回家搞副业十天赚几千
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天看点:【个人笔记】2023年搭建基于webpack5与typescript的react项目
写在前面
由于我在另外的一些文章所讨论或分析的内容可能基于一个已经初始化好的项目,为了避免每一个文章都重复的描述如何搭建项目,我在本文会统一记录下来,今后相关的文章直接引用文本,方便读者阅读。此文主要为个人笔记,不会有太多的关于思路的描述;另外,本文仅仅描述如何搭建基础react项目,不涉及图片等资源的加载,关于图片等资源的处理,我会单独编写一期。
项目初始化
创建一个目录,例如:webpack5-react-demo,然后进入目录执行初始化指令
$ mkdir webpack5-react-demo$ cd webpack5-react-demo $ yarn inityarn init v1.22.19question name (webpack5-react-demo): question version (1.0.0): question description: question entry point (index.js): question repository url: question author: question license (MIT): question private: success Saved package.json✨ Done in 10.32s.
添加gitignore文件,路径为项目根目录/.gitignore
:
(资料图片)
.idea.vscodenode_modulesdist
初始化git仓库:
$ git init$ git add .$ git commit -m "init"
(0)NPM依赖添加
echo "【1】基于webpack的项目核心相关内容"echo "添加webpack基础四件套依赖"yarn add -D webpack webpack-cli webpack-dev-server html-webpack-pluginecho "【2】处理js(x)、ts(x)的相关模块"echo "添加babel核心模块"yarn add -D @babel/coreecho "添加babel相关preset欲集"yarn add -D @babel/preset-env @babel/preset-react @babel/preset-typescriptecho "添加babel相关plugin插件"yarn add -D @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spreadecho "添加babel-loader"yarn add -D babel-loaderecho "【3】处理style样式的相关模块"echo "添加css-loader以及MiniCssExtractPlugin"yarn add -D css-loader mini-css-extract-pluginyarn add -D less less-loaderecho "【4】添加react/react-dom的类型定义以及运行依赖"yarn add react react-domyarn add -D @types/react @types/react-dom
(1)webpack.config.js
作用:webpack基本配置,定义入口、各种loader、plugin等。
路径:项目根目录/webpack.config.js
内容:
const {resolve} = require("path");const HtmlWebpackPlugin = require("html-webpack-plugin");const MiniCssExtractPlugin = require("mini-css-extract-plugin");module.exports = { mode: "development", entry: { main: resolve(__dirname, "src", "index.tsx") }, output: { filename: "index.js", path: resolve(__dirname, "dist") }, resolve: { // webpack 默认只处理js、jsx等js代码 // 为了防止在import其他ts代码的时候,出现 // " Can"t resolve "xxx" "的错误,需要特别配置 extensions: [".js", ".jsx", ".ts", ".tsx"] }, module: { rules: [ { test: /\.tsx?/, use: [ "babel-loader" ], exclude: /node_moudles/ }, { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, "css-loader" ] }, { test: /\.less$/, use: [ MiniCssExtractPlugin.loader, "css-loader", "less-loader" ] } ] }, plugins: [ new HtmlWebpackPlugin({ template: resolve(__dirname, "public", "index.html"), inject: "body" }), new MiniCssExtractPlugin({ filename: "app.css" }) ], devServer: { port: 8080 }}
(2).babelrc
作用:被@babel/core读取使用,其中定义了@babel/core要用到的preset、plugin等组件,对ts文件进行编译。想要深入理解,可以阅读另一篇文章:【长文详解】TypeScript与Babel、webpack的关系以及IDE对TS的类型检查 - 知乎 (zhihu.com)。
路径:项目根目录/.babelrc
内容:
{ "presets": [ "@babel/preset-env", "@babel/preset-typescript", ["@babel/preset-react", {"runtime": "automatic"}] ], "plugins": [ "@babel/plugin-proposal-object-rest-spread", "@babel/plugin-proposal-class-properties" ]}
(3)tsconfig.json
作用:仅作为IDE进行TypeScript类型检查服务的文件,与ts代码编译没有直接关系。可以阅读另一篇文章来了解:【长文详解】TypeScript与Babel、webpack的关系以及IDE对TS的类型检查 - 知乎 (zhihu.com)
路径:项目根目录/tsconfig.json
内容:
{ "compilerOptions": { "module": "commonjs", "rootDir": "./src", "outDir": "./dist", "jsx": "react-jsx" }}
(4)项目代码
src目录下,三个文件:index.tsx、index.module.less、react-app.d.ts。
src/index.tsx
路径:项目根目录/src/index.tsx
内容:
import {createRoot} from "react-dom/client";import styles from "./index.module.less";const App = () => { return Hello, App}createRoot(document.querySelector("#app")).render( )
src/index.module.less
路径:项目根目录/src/index.module.less
内容:
html, body { height: 100%; width: 100%; margin: 0;}div { box-sizing: border-box;}.app { height: 100%; width: 100%; font-size: 20px; span { color: rgb(0, 111, 222); font-size: 24px; }}
src/react-app.d.ts(特别)
作用:仅仅用于类型定义,目前定义的是模块化less文件的结构定义。
路径:项目根目录/src/react-app.d.ts
内容:
declare module "*.module.less" { const content: { [className: string]: any } export default content;}
public/index.html
作用:指定的html模板,根webpack.config.js里面HtmlWebpackPlugin所制定的模板路径保持一致。
路径:项目根目录/public/index.html
内容:
Title
运行
在package.json中添加运行脚本:
{ "name": "webpack5-react-demo", "version": "1.0.0", "main": "index.js", "license": "MIT",+ "scripts": {+ "dev": "webpack-dev-server --config webpack.config.js"+ }, "devDependencies": {... ... }, "dependencies": { ... ... }}
效果:
附录
图解webpack配置与NPM包关系
github仓库
w4ngzhen/webpack5-react-demo (github.com)
-
天天看点:【个人笔记】2023年搭建基于webpack5与typescript的react项目
写在前面由于我在另外的一些文章所讨论或分析的内容可能基于一个已经初始化好的项目,为了避免每一个文...
来源: 天天看点:【个人笔记】2023年搭建基于webpack5与typescript的react项目
获11年来最大营收增幅照裁不误:IBM宣布将裁员3900人
世界快讯:苹果官网开售Mac Studio“锁具套装”:一个密码锁卖到548元
世界观察:为啥特斯拉疯狂降价到20多万 利润依然最高?官方揭秘真相
焦点!三星Galaxy S23 Ultra拍摄样张流露:30X变焦效果比S22 Ultra 20X更清晰
微速讯:RTX 4060将至:TGP功耗160W 可能采用传统8PIN供电
重点聚焦!影院回应《流浪地球2》改播《满江红》引热议:设备故障不能放
天天视点!全球数万用户遭波及:微软终于修复OneDrive等服务宕机问题
快资讯:Intel新款锐炫显卡现身:16 Xe核心 比A770弱42%
环球滚动:读Java8函数式编程笔记01_Lambda表达式
快资讯丨你为啥还不升级Win11?微软:1月31日停售Windows 10
世界速递!腾讯NVIDIA达成深度合作:打造低延迟超大分辨率渲染平台
当前视点!手机Galaxy S23系列手机保护壳曝光:独占功能 可滑动解锁
win11启动虚拟机出现蓝屏
全球聚焦:女子零下14度观影被冻到扶墙退场 网友:这是5D电影 身临其境
天天视讯!2023春节档总票房突破50亿!有望冲击史上最强春节档
世界短讯!向Redmi Note 12 Pro极速版看齐!小米Poco X5 Pro即将发布:骁龙778G配1亿像素主摄
世界热消息:安徽一电竞酒店装30块RTX 4090显卡:梦幻装备 玩了回不去
看热讯:Dart常用核心知识
世界热讯:带薪撸猫 女子过年不回家搞副业十天赚几千
编程与类型系统读后总结与感想
MySQL数据库
全球快资讯:国产新型量子计算机即将发布 中国第一家量子计算公司打造
短讯!《流浪地球2》智能机械狗“笨笨”开售:899元 支持遥控
每日信息:vue-grid-layout数据可视化图表面板优化过程所遇问题汇总
焦点讯息:索尼再次动刀!宣布电视、相机等产品即将涨价14%
全球实时:魅族20外观设计现身:极窄直屏边框颜值在线
头条:回文数-力扣
每日看点!蔚来车主占三个车位充电引争议 汽车博主:好像只能这么充
男孩打开新年礼盒发现是试卷后大哭:寒假作业还没有写完
天天视讯!漠河零下53℃极寒 有居民屋里穿短袖!网友集体羡慕:我们这取暖靠抖
当前快播:2022年度中国汽车保值率:日系车屠榜 秒杀BBA豪华车
学习笔记——NoSQL数据库;Redis概述;redis中常用的数据类型(key、string)
环球热头条丨比亚迪或进军保险业 将全资接盘易安财险
春运时间翻倍!电动车车主称油车返乡8小时 他开了15小时
每日视讯:《满江红》票房逆跌 成春节档冠军!张艺谋刷新个人纪录
天天速讯:海外观众评价《流浪地球2》:不比《星际穿越》差
速度高达9.6Gbps!SK海力士发布全球最快移动DRAM
世卫组织:全球50亿人无法避免反式脂肪 会致命的有毒化学物质
在家享受牛奶SPA!舒蕾沐浴露大促:10元/斤
世界头条:马斯克或参与特斯拉自动驾驶视频造假?细节曝光
观速讯丨微软裁员1万人 遣散费高达8亿美元 平均每人获赔54万元
MiniLED国货崛起?2023年的电视不太好下手
iPhone 15 Pro相机将迎来质变:5倍潜望长焦赶上安卓阵营
2023春节档票房破40亿!《满江红》14亿票房领跑
环球播报:吃饺子就是得蘸醋 这件事在几亿年前就决定了!
每日观察!印度收到90亿光年外星系无线电信号 天文学家:外星人没有参与
复旦教授:《流浪地球2》不输于近5年任何一部国外科幻大片
天天观速讯丨27年前 中国自研第一台64位超级小型计算机 当时世界最先进
【天天报资讯】《流浪地球2》:当一部电影演到第三个钟头
谁说中国人造不出保时捷?
今日视点:RTX 4090依旧掉帧!SE大作《Forspoken》今日发售:成新一代硬件杀手
全球今日报丨全球汽车畅销榜:美国忠爱大皮卡 国人狂买比亚迪
什么是闭包?
全球新动态:猫咪机器人下国际象棋快逼疯人类 顶级棋手也只能和它打成平局
【天天播资讯】薛之谦发文告别暴雪 自称“曲阳爆叉叉兵一波流王”
mac的m芯片安装gup版本的pytroch,并链接到pycharm
泰山温度-22℃ 游客大雪中抱团 网友感叹:还以为翻拍《长津湖》
每日观点:雷军告别《魔兽世界》:18年前就玩了 感慨万千 再见艾泽拉斯
兔年邮票为啥是蓝色兔子?设计者女儿说出真相
世界速讯:中国影史首个!吴京个人总票房达300亿
一加首款机械键盘来了:水晶旋钮 无小数字键
世界视点!python简单实现对桌面进行实时捕捉画面
小米汽车前脸设计图疯传 王化回应:早期招标设计稿 并非最终版
全球热点!女子吐槽羽绒服到东北变嘎嘣脆 为什么遇冷会变硬?
世界实时:学习笔记——Linux中搜索查找类命令;压缩和解压类;Linux挂载和卸载;进程线程类命令;RPM;YUM
环球热消息:太假了!网友分析《三体》动画B站真实评分为2.1分
焦点速递!《流浪地球2》TC版已流出 官博呼吁大家抵制盗版:文明观影
2023牛客寒假算法基础集训营1 个人题解(ACDHKL)
每日看点!大过年的临时工玩呢 AMD又搞了个乌龙:锐龙7000X3D不能超频
天天简讯:彻底离开中国制造不现实 未来苹果将有25%产品来自印度
世界关注:“终极功率半导体”获突破性进展!金刚石有望成为终极半导体材料
每日动态!NASA第一架电动飞机即将上天 官宣至今已过去7年
世界实时:全球最高安全标准 我国自研第三代核电华龙一号稳步推进:1台年发电100亿度
环球今日报丨学习笔记——CentOS中的时间日期类命令;用户管理类命令(useradd,passwd ,id,su ,userdel,who ,usermod,
天天日报丨RTX 4060 Ti性能、价格逼近RTX 3070 网友质疑:升级图啥
steam春节特卖:11款热卖大作 部分游戏低至2折
读函数式编程思维笔记05_现实应用
每日热点:学习笔记——CentOS中的帮助命令;常用快捷键;文件目录类命令
全球视点!猪肉没有以前香了 我们的餐桌已被洋猪肉占据 鲜香早已不复当年
天天亮点!马斯克为“特斯拉私有化推文案”辩护:本可通过出售SpaceX的股份完成融资
环球快报:阿里云盘TV版上线 电视上直接看网盘里的大片
中科院研发新一代“电力银行”:充满可供20万人用一天
载人登月巨无霸 长征九号重型火箭将于2035年前后首飞
天天实时:国产2TB PCIe 4.0 SSD只要749元:搭载长江存储TLC颗粒 京东自营5年质保
当前报道:俄罗斯黑客攻破《暗黑破坏神4》测试版 自己开私服
世界头条:猫人石墨烯抗菌男士内裤三条装下单9折 29元
AMD官方确认:锐龙7000X3D系列将支持超频
春节档票房破30亿 暂列2023全球第一:《流浪地球2》独占10亿
世界今头条!游客遭遇山寨兵马俑、秦皇陵 大喊退票:专家科普真景点只看这两处
雷军安利MIUI“称呼计算器”:再也不怕过年喊错亲戚了
全球热头条丨499元买iPhone SE的羊毛没了!苹果bug已修复:下单的不认账
滚动:九旬老人花21万买17个金镯子送晚辈!网友羡慕了:满满都是爱
全球即时看!大神挑战32MB内存运行Win7系统 花2年时间减少4MB占用
万兆25Gbps:胜为万兆八类网线7.5米23.9元
清仓抄底:太平鸟夹克/棒球服等199-259元大额券
天天热消息:魔兽等7款暴雪游戏关服 网易公布退款说明:2月1日开放
环球快资讯:C919大飞机即将迎来兔年第一飞:很快就能商业载客了
今日热议:中国暴雪玩家的“最后一天”:走过地图每一处 把自己存进骨灰盒
环球热推荐:男子回应特斯拉充14次电回东北:并没有特别多的充电焦虑