TypeScript学习日志-第二十四天(webpack构建ts+vue3)

webpack构建ts+vue3

一、构建项目目录

如图:

shim.d.ts 这个文件用于让ts识别.vue后缀的 后续会说

并且给 tsconfig.json 增加配置项

javascript 复制代码
  "include": [
    "src/**/*"
  ]

二、基础构建

安装依赖

安装如下依赖:

javascript 复制代码
npm install webpack -D
npm install webpack-dev-server -D
npm install webpack-cli -D

修改 package.json 的启动服务和打包命名

javascript 复制代码
{
  "scripts": {
    "build": "webpack",
    "dev": "webpack-dev-server"
  }
}

编写 webpakc.config.js 配置文件

javascript 复制代码
const {Configuration} = require('webpack')
const path = require('node:path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const {VueLoaderPlugin} = require('vue-loader')
const CssExtractPlugin = require('mini-css-extract-plugin')
/**
 * @type {Configuration}
 */
const config = {
    mode:'development',
    entry:'./src/main.ts', // 入口文件
    output:{
        path:path.resolve(__dirname,'dist'), //生成目录
        filename:'[chunkhash].js' ,//打包之后的文件
        clean:true //清空打包的结果
    },
    stats:'errors-only',
    plugins:[
        new HtmlWebpackPlugin({
            template:'./index.html'
        }),
        new VueLoaderPlugin(),
        new CssExtractPlugin()
    ], //webpack的插件都是class 都需要new
    module:{
        rules:[
            {
                test:/\.ts$/,
                use:{
                    loader:'ts-loader', // 处理ts文件
                    options:{
                        appendTsSuffixTo:[/\.vue$/]
                    }
                }
            },
            {
                test:/\.vue$/,
                use:'vue-loader',
            },
            {
                test:/\.css$/,
                use:[CssExtractPlugin.loader,'css-loader'], //从右向左解析
            },
            {
                test:/\.less$/,
                use:[CssExtractPlugin.loader,'css-loader','less-loader'], //从右向左解析
            }
        ]
    },
    optimization:{
        splitChunks:{
            cacheGroups:{
                moment:{
                    name:'moment',
                     chunks:'all',
                     test:/[\\/]node_modules[\\/]moment[\\/]/
                },
                common:{
                    name:'common',
                    chunks:'all',
                    minChunks:2 //它的引用次数大于2个就会被分割出来
                }
            }
        }
    }
}

module.exports = config

这时候就能正常使用了

相关推荐
江拥羡橙6 分钟前
【目录-多选】鸿蒙HarmonyOS开发者基础
前端·ui·华为·typescript·harmonyos
叫我阿柒啊11 小时前
从Java全栈到前端框架:一次真实的面试对话与技术解析
java·javascript·typescript·vue·springboot·react·前端开发
lypzcgf14 小时前
Coze源码分析-资源库-删除提示词-前端源码
前端·typescript·react·ai应用·coze·coze源码分析·智能体平台
子兮曰15 小时前
🚀99% 的前端把 reduce 用成了「高级 for 循环」—— 这 20 个骚操作让你一次看懂真正的「函数式折叠」
前端·javascript·typescript
芭拉拉小魔仙16 小时前
【Vue3+TypeScript】H5项目实现企业微信OAuth2.0授权登录完整指南
javascript·typescript·企业微信
摘星编程21 小时前
Cursor Pair Programming:在前端项目里用 AI 快速迭代 UI 组件
前端·人工智能·ui·typescript·前端开发·cursorai
叫我阿柒啊21 小时前
从Java全栈到云原生:一场技术深度对话
java·spring boot·docker·微服务·typescript·消息队列·vue3
已读不回1431 天前
TypeScript 泛型入门(新手友好、完整详解)
typescript
已读不回1431 天前
TypeScript 内置工具类型大全(ReturnType、Omit、Pick 等)
typescript
已读不回1431 天前
实现 TypeScript 内置工具类型(源码解析与实现)
typescript