菜鸟录(一)——TS+React环境0到1历程

本文详述了从零开始构建TS+React开发环境的全过程,包括Webpack配置、区分开发和生产环境、本地服务、样式处理(Less、PostCSS)、图片处理、其他配置如类型检查、编译速度优化等,旨在帮助开发者系统地搭建和优化项目环境。
摘要由CSDN通过智能技术生成

前言

从实习开始,一直都是在做零零碎碎的东西,辗转于各种业务需求之间,从来没有从0到1跟过一个完整的项目,这就导致我所有学过的知识很零散,不具有连贯性和实操性。我意识到这样辗转于各种业务需求之间,并不会促进我自身的进步,更为危险的是这将浪费一个菜鸟最为宝贵的成长时机。既然没有机会,那我就自己创造机会。因此,有了TS+React环境搭建、npm包的发布、脚手架搭建这一系列从0到1的笔记。(这是一个一心想搞好技术的菜鸟的自我记录,不足之处,还望各位大佬多多提点)

从webpack入手 

安装webpack工具

npm i webpack webpack-cli --save-dev

使用版本:

 "webpack": "^4.41.2",
 "webpack-cli": "^3.3.10",

配置webpack

个人习惯将不同配置环境文件拆分开(具体配置见官网),遵循一步一测的原则。

1.先配置公共common文件

const path = require('path')
module.exports = {
    entry: {
        app: path.resolve(__dirname, '../../src/main.js'),
    },
    output: {
        filename: 'js/[name].[hash:8].js',
        path: path.resolve(__dirname, '../../dist'),
    },
}

 2.更改package.json文件

{
  "scripts": {
   "build": "webpack --config ./scripts/config/webpack.common.js",
  },
}

3.运行

npm run build

可以看到根目录下出现了dist文件夹。

区分开发和生产环境

为适应不同环境的需求,我们通过webpack-merge 来适配不同环境的webpack配置文件

npm install webpack-merge -D

接下来分别在webpack.dev.js和webpack.prod.js文件中配置如下:


// webpack.dev.js文件
const { merge } = require('webpack-merge')
const common = require('./webpack.common.js')

module.exports = merge(common, {
    mode: 'development',
});


//webpack.prod.js文件
const { merge } = require('webpack-merge')
const common = require('./webpack.common.js')

module.exports = merge(common, {
    mode: 'production',
})

考虑到不同操作系统设置环境变量的方式不一定相同,比如 Mac 电脑上使用 export NODE_ENV=development ,而 Windows 电脑上使用的是 set NODE_ENV=development ,因此使用cross-env这个工具来实现跨平台设置和使用环境变量。

npm install cross-env -D

接下来需更改package.json文件

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

此时,运行两条命令皆可看到根目录下生成dist文件,说明目前配置是成功的。

本地服务实时查看页面

执行npm run start ,它直接起一个本地服务,然后页面就出来了。而现在执行这个命令却只能简单的打个包,此时,需借助 webpack-dev-server 和 html-webpack-plugin 实现,现在先把它们安装下来:
npm install webpack-dev-server html-webpack-plugin -D

 使用版本:

"html-webpack-plugin": "^4.5.1",
"webpack-dev-server": "^3.11.2",

工具作用:

  • html-webpack-plugin :每一个页面是一定要有 html 文件的,而这个插件能帮助我们将打包后的 js 文件自动引进 html 文件中,毕竟你不可能每次更改代码后都手动去引入 js 文件。
  • webpack-dev-server :可以在本地起一个 http 服务,通过简单的配置还可指定其端口、热更新的开启等。

因为 html-webpack-plugin 在开发和生产环境我们都需要配置,所以在 webpck.common.js 增加以下内容 :

const HtmlWebpackPlugin=require('html-webpack-plugin');
module.exports = {
    entry: {...},
    output: {...},
    plugins: [
        new HtmlWebpackPlugin({
            template: path.resolve(PROJECT_PATH, './public/index.html'),
            filename: 'index.html',
            cache: false, // 特别重要:防止之后使用v6版本 copy-webpac
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值