webpack + TypeScript搭建工程

2023-11-15

工程搭建

环境:浏览器 + 模块化

webpack: 构建工具,更据人口文件找寻依赖关系,打包

安装 npm i webpack webpack-cli -D

安装插件

npm i -D html-webpack-plugin clean-webpack-plugin webpack-dev-server

webpack.config.js配置

devServer: {
    open: true,
    port: 8000
},

配置命令

"scripts": {
  "start": "npx webpack-dev-server --mode=development",
  "build": "npx webpack --mode=production"
},

package.json

{
  "name": "teris-game",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "npx webpack-dev-server --mode=development",
    "build": "npx webpack --mode=production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^4.0.0",
    "ts-loader": "^9.2.5",
    "typescript": "^4.4.3",
    "webpack": "^5.52.1",
    "webpack-cli": "^4.8.0",
    "webpack-dev-server": "^4.2.1",
    "html-webpack-plugin": "^5.3.2"
  },
  "dependencies": {}
}

配置TS

安装 ts相应loader ts-loader(官方) 或 awsome-typescript-loader

和对应的依赖 typescript

npm i -D ts-loader typescript

webpack.config.js配置

rules: [{
    test: /\.ts$/,
    loader: "ts-loader"
}]

启动开发服务器后,添加类型并使用,开发服务器编译出错
解决方法:
https://www.npmjs.com/package/ts-loader transpileOnly

{ 
 	test: /\.ts$/, 
 	use:{
   		loader:"ts-loader",
   		options:{
     		transpileOnly: true, 
   		}
   	}
}

生成 ts配置文件 tsconfig.json tsc --init

配置详情

{
  "include": [
    "./src"
  ], 
  "compilerOptions": {
    "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */
    "module": "ESNext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
    "lib": ["ES2016", "DOM"],                                   /* Specify library files to be included in the  */
    "sourceMap": true,                              /* Generates corresponding '.map' file. */
    "removeComments": true,                         /* Do not emit comments to output. 移除注释 */
    "isolatedModules": true,                        /* 要求每个ts文件读书一个模块 Transpile each file as a separate module (similar to 'ts.transpileModule'). */
    "moduleResolution": "node",                  /* 模块解析方式 Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
    "esModuleInterop": true, /* 使用es6模块化方式与其他模块化方式交互 Enables emit interoperability between CommonJS 
    "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
  }
}

此时,写一个模块

// myModule.ts
export const a = 1

// index.ts
import {a} from './myModule'
console.log('a',a)
export default {}

会抛出错误 Can't resolve './myModule' in 'xxx\teris-game\src' resolve './myModule'

让webpack也读取ts文件, 让webpack多解析一个 .ts 文件

resolve: {
    extensions: ['.ts', '.js']
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack + TypeScript搭建工程 的相关文章

随机推荐

  • stream新特性

    package com jeethink system domain public class Employee public Integer age public String name public Integer getAge ret
  • 十几行代码就可以让你的微信小程序挂掉

    mpvue github 地址请参见 是一个使用Vue js 开发小程序的前端框架 框架基于 Vue js核心 mpvue 修改了 Vue js 的runtime 和compiler 实现 使其可以运行在小程序环境中 从而为小程序开发引入了
  • HTML5

    文章目录 前言 滚动长画幅 实现细节 语义化标签 语言的本地化 前言 本文将分析 AirPods Pro 产品介绍使用的技巧与有趣的第三方库 滚动长画幅 这次AirPods Pro 的产品介绍以一个由用户手动进行滚动推进的长画幅组成 这个长
  • day02-HTML5列表/表格/媒体元素/结构元素

    0目录 补充知识点 HTML5列表 HTML5表格 HTML5媒体元素 HTML5结构元素 1 行内元素和块元素 行内元素 不独占一行 例如 a 标签 strong标签 em标签 块级元素 独占一行 例如 p 标签 h1 h6标签 2 HT
  • Python爬虫系列之爬取猫眼电影,没办法出门就补一下往期电影吧

    前言 今天给大家介绍利用Python爬取并简单分析猫眼电影影评 让我们愉快地开始吧 开发工具 Python版本 3 6 4 相关模块 requests模块 pyecharts模块 jieba模块 scipy模块 wordcloud模块 以及
  • 运行Pangolin时提示以下错误: terminate called after throwing an instance of 'std::runtime_error'

    在运行Pangolin时提示以下错误 terminate called after throwing an instance of std runtime error what Pangolin X11 Unable to retrieve
  • 增强现实代码+注释解析(三)

    1 书名 Mastering OpenCV with Practical Computer Vision Projects 2 章节 Chapter 3 Marker less Augmented Reality 3 书中源代码的最新更新可
  • CustomEditor+ScripableObject 简单用法

    写在前面 看了一整天 算是明白了点 记录一下 要是不知道怎么入门可以看一下 希望能帮到您 Ps 本文一律采用c 进行讲解 用途 自定义inspector 监视器 面板 举个例子 你在ScriptableObejct里声明了一个string类
  • Linux安装——VMware + RedHat

    文章目录 1 安装VMware虚拟机 2 安装RedHat红帽系统 2 1 虚拟机设置 2 2 开启虚拟机 3 cannot updata read only repo 3 1 删除自带yum包 3 2 下载centos版本yum包替换 3
  • Mysql 5.7 / 5.8 性能测试

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 转载于 https my oschina net u 582827 blog 1802981
  • Python训练了个模型,怎么交给Java用呢?

    最近碰到几个人问 如何实现 java 调用他们写好的 Python 应用 模型 这里我就把几种常见的办法做下汇总整理 喜欢本文记得收藏 关注 点赞 注 文末提供技术交流群 推荐文章 李宏毅 机器学习 国语课程 2022 来了 有人把吴恩达老
  • 【应用层】DNS协议

    一 概述 本篇文章基于 计算机网络 和 计算机网络 自顶向下方法 为笔者的读书笔记 主要内容如下所示 DNS提供的服务 互联网的域名结构 DNS服务器的分布 DNS的工作原理 DNS记录 往DNS插入记录 二 DNS提供的服务 域名系统 D
  • (二十九)admin-boot项目之自定义全局拦截404异常

    二十九 自定义全局拦截404异常 项目地址 https gitee com springzb admin boot 如果觉得不错 给个 star 简介 这是一个基础的企业级基础后端脚手架项目 主要由springboot为基础搭建 后期整合一
  • 深入理解Linux内核(第三版)- 进程切换

    为了控制进程的执行 内核必须有能力挂起正在CPU上运行的进程 并恢复以前挂起的某个进程的执行 这种行为被称为进程切换 process switch 任务切换 task switch 或上下文切换 context switch 硬件上下文 尽
  • 5G信令流程详解-45G互操作流程详解

    5G信令流程详解 45G互操作流程详解
  • java打开本机应用程序_Java启动本机应用程序EXE的三种方式

    Java代码 第一种方式 利用cmd方式 执行cmd命令 param command throws IOException public static String executeCmd String command throws IOEx
  • 常见报错01

    1 apt get no process found 如果你在使用apt get命令时出现 apt get no process found 错误消息 可能是以下原因之一 1 没有正在运行的apt get进程 这个错误通常会在你尝试终止一个
  • Python中的for循环和range()函数用法详解

    引言 在Python编程中 for循环和range 函数是非常常用的语法结构 用于遍历序列和重复执行一段代码块 本文将详细介绍Python中for循环和range 函数的用法 包括语法 参数 应用场景 并结合实际案例进行分析 一 for循环
  • maven 打包 releases 和 snapshots 版本

    releases 线上版本 生产环境使用的 snapshots 快照版本 开发过程中使用的 maven 打包代码到私服根据version 后面是否带有 SNAPSHOTS 来区分是打包线上版本还是快照版本 如果带有 SNAPSHOTS 打包
  • webpack + TypeScript搭建工程

    工程搭建 环境 浏览器 模块化 webpack 构建工具 更据人口文件找寻依赖关系 打包 安装 npm i webpack webpack cli D 安装插件 npm i D html webpack plugin clean webpa