创建一个基于WebPacket的TypeScript项目【一】

2023-05-16

创建一个基于WebPacket的TypeScript项目

  • 安装node.js环境
  • 建立目录结构
            • 在 `templates` 目录新建 `template.index.html`并写入
  • 安装VSCode
  • 创建一个NPM项目
    • 确认
  • 安装TypeScript
  • 创建一个TypeScript项目
  • 配置项目
    • 修改`package.json` 配置
          • 修改`devDependencies` 和 `dependencies`
          • 修改 `scripts`配置为
    • 修改`tsconfig.json` 配置
    • 初始化 npm包
    • `webpack.config.js`文件并写入
  • 调试代码
  • 启动Chrome
  • End

安装node.js环境

下载并安装Node.js
打开CMD输入 node -v 如出现如下图版本号则表示node安装成功
在这里插入图片描述

建立目录结构

新建文件夹 ts
ts目录新建 src templates 目录
src 源码目录
templates html模板目录

templates 目录新建 template.index.html并写入
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Webpack Demo</title>
</head>
<body>
</body>
</html>

安装VSCode

下载并安装 VSCode

创建一个NPM项目

打开终端进入ts目录,我是用的git bash,你如果没装git的话可以用cmd。

输入 npm init 回车
在这里插入图片描述
package name 要创建的npm包名可以写你的项目名,如果你的代码想要发布成npm包的话就写成npm包名。 这里我们写myproject
version 当前npm包的版本,默认为1.0.0可以直接按回车跳过后续可修改。跳过
description npm包说明,可按回车跳过后续可修改 跳过
entry point npm的入口点通常填写main.js,但是我们创建的项目是基于webpacket的所以我们填写 webpack.config.js 当然你也可以后面再做修改
text command 测试命令,我们先不填。跳过
git repository npm包的开源git仓库,可以跳过后面再修改。跳过
keywords npm包的关键字,以便让更多的人找到它,可以跳过后面再修改。跳过
author npm包的作者,可以写入你的代表性昵称,可以跳过后面再修改。跳过
license npm的许可证,如果别人要用你的npm包需要什么样的许可证。跳过

确认

在这里插入图片描述
输入 yes 或直接按回车键完成创建,会在当前目录生成一个package.json的文件。

安装TypeScript

打开终端 输入 npm install typescript -g 安装typescript
终端输入 tsc -v 回车 如出现下图版本号 说明安装成功。
在这里插入图片描述

创建一个TypeScript项目

继续上面那一步,打开终端进入ts目录,输入tsc --init初始化typescript项目。
如果成功的话它将提示message TS6071: Successfully created a tsconfig.json file.
同时 ts目录下会创建一个tsconfig.json文件。
在这里插入图片描述

配置项目

ts目录右键打开 vscode
在这里插入图片描述

修改package.json 配置

点击左侧目录打开package.json 我们添加项目依赖。

修改devDependenciesdependencies

一个是开发依赖包devDependencies
一个是运行依赖包dependencies
修改完的文件内容如下删掉注释部分

{
  "name": "myproject",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "dependencies": {
    "lodash": "^4.17.15",//用于javascript模块加载
  },
  "devDependencies": {
    "@babel/core": "^7.2.2",//typescript模块加载的支持。
    "babel-loader": "^8.0.4",//typescript模块加载的支持。
    "babel-preset-env": "^1.7.0",//typescript模块加载的支持。
    "@types/node": "^12.12.14",//javascript的类型声明,用于代码提示支持。
    "copy-webpack-plugin": "^5.0.5",//webpack插件用于拷贝文件。
    "html-webpack-plugin": "^3.2.0",//webpack插件用于使用html模板。
    "ts-loader": "^6.2.1",//用于加载typescript模块。
    "typescript": "^3.7.2",//typescript的支持
    "webpack": "^4.41.2",//webpack框架,用于打包编译我们的`typescript`项目。
    "webpack-cli": "^3.3.10",//webpack框架,用于打包编译我们的`typescript`项目。
    "http-server": "^0.12.3",//用于启动http服务器。
    "concurrently":"^5.2.0"//用于并行启动调试命令。
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Hanks",
  "license": "ISC"
}

修改 scripts配置为

删掉注释部分

"scripts": {
    "build": "webpack  --watch",//编译打包ts项目
    "httpserver": "http-server dist\\ --port=8080",//启动http服务
    "debug": "concurrently \"npm run build\" \"npm run httpserver\""//同时运行上面两条命令
  }

这里我们添加了3条npm测试命令

build:执行webpack命令编译打包我们的typescript项目,--watch为进程实时监控代码的变动并编译。
httpserver:启动http服务供我们调试预览代码。
debug:使用concurrently包来实现同时运行buildhttpserver两条指令。

修改tsconfig.json 配置

打开 tsconfig.js 修改内容为以下删掉注释部分

{
  "compilerOptions": {
    "target": "es5",  //编译的目标标准为es5
    "outDir": "./dist/",//编译输出目录为 dist
    "module": "commonjs", //编译为 commonjs模块
    "declaration": false,
    "noImplicitAny": true, //不能像javascript那样类型
    "moduleResolution": "node",//模块的解析
    "removeComments": true,//移除注释
    "sourceMap": true,//生成sourceMap信息
    "emitDecoratorMetadata": true,//给源码里的装饰器声明加上设计类型元数据。查看issue #2577了解更多信息。
    "experimentalDecorators": true,//启用实验性的ES装饰器
    "resolveJsonModule": true,
    "allowJs": true
  },
  "exclude": [
    "node_modules",
  ]
}

初始化 npm包

VScode 顶部菜单点击 终端 新建终端
在下方终端输入 npm i 初始化包 等待大约1分钟后
在这里插入图片描述

在src目录新建 TestClass.ts 并写入

export class TestClass {
    say(content: String) {
        console.log(content);
    }
}

在ts目录新建 Index.ts 并写入

import { TestClass } from "./src/TestClass";

var test = new TestClass();
test.say("Hello World");

webpack.config.js文件并写入

const path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');


module.exports = {
  entry: './Index.ts',
  devtool: 'inline-source-map',
  mode: 'development', //production  development
  module: {
    rules: [{
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }, {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader?modules&importLoaders=1',
          'typed-css-modules-loader'
        ]
      },
      {
        test: /\.js$/, // 值一个正则,符合这些正则的资源会用一个loade来处理
        use: {
          loader: 'babel-loader' // 使用bable-loader来处理
        },
        exclude: '/node_module/' // 排除在外
      }
    ]
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js']
  },
  output: {
    filename: '[name].js',
    path: path.resolve(__dirname, 'dist')
  },
  plugins: [new HtmlWebpackPlugin({ //Index.html 模板化
    template: "./templates/template.index.html",
    title: "PowerDistribution Demo",
    filename: 'index.html',
    minify: {
      collapseWhitespace: false,
    },
    hash: true
  }), new CopyWebpackPlugin([{ //wwwroot 静态目录拷贝
    from: __dirname + '/src/assets',
    to: __dirname + '/dist',
    toType: "dir",
    force: false,
    ignore: ['.*']
  }])]
};

调试代码

终端输入 npm run debug 如果不出意外的话将出现如下图,表示成功编译。
在这里插入图片描述

启动Chrome

点击左侧调试菜单 点击创建 launch.json文件 在顶部的弹出菜单中选择Chrome
在这里插入图片描述
在你的代码里打上断点,按F5运行Chrome浏览器。 不出意外的话将会进入断点。
在这里插入图片描述

End

还有更多的webpack插件,webpack远比你想的要强大。
typescript的智能语法提示保证让你用过之后再也不想去写javascript。
备份下我的package.json配置

{
  "name": "myproject",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "dependencies": {
    "@juggle/resize-observer": "^2.4.0",
    "lodash": "^4.17.15",
    "typed-css-modules": "^0.6.3",
    "typed-css-modules-loader": "0.0.18"
  },
  "devDependencies": {
    "@babel/core": "^7.2.2",
    "@types/node": "^12.12.14",
    "babel-loader": "^8.0.4",
    "babel-preset-env": "^1.7.0",
    "copy-webpack-plugin": "^5.0.5",
    "css-loader": "^3.2.0",
    "html-webpack-plugin": "^3.2.0",
    "json-loader": "^0.5.7",
    "style-loader": "^1.0.1",
    "ts-loader": "^6.2.1",
    "typescript": "^3.7.2",
    "typings-for-css-modules-loader": "^1.7.0",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "http-server": "^0.12.3",
    "concurrently":"^5.2.0"
  },
  "scripts": {
    "build": "webpack  --watch",
    "httpserver": "http-server dist\\ --port=8080",
    "debug": "concurrently \"npm run build\" \"npm run httpserver\""
  },
  "author": "Hanks",
  "license": "ISC"
}

GitHub仓库 https://github.com/vblegend/web-es6-typescript-template

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

创建一个基于WebPacket的TypeScript项目【一】 的相关文章

  • 来来来!我告诉你 AUTOSAR架构深度解析从入门到放弃

    如何快速学习AUTOSAR 关于AUTOSAR的背景和架构信息 xff0c 这里就不详细展开了 大家可以参看 xff1a AUTOSAR的分层架构 一文了解 今天我们重点讲讲如何快速学习AUTOSAR架构的方法 如何获取规范文档 xff1f
  • 智能指针make_unique 与make_shared 的知识介绍

    关于make unique的构造及使用例程 xff0c MSDN的讲解非常详细 xff08 https msdn microsoft com zh cn library dn439780 aspx xff09 使用过程中 xff0c 主要有
  • Adaptive AutoSAR 标准介绍

    关于自适应AutoSAR 平台 自适应autosar 平台实现了adaptive applications的运营环境 它提供了两种接口 xff0c 一种是service 一种是API 平台功能分成两部分 xff1a service部分和ad
  • MPU和MCU的区别

    MCU指的是微控制 器 集合了FLASH RAM和一些外围器件 MCU一般使用片内FLASH来存储和执行程序代码 MPU指的是微处理 器 FLASH和RAM则需要设计者自行搭建 xff0c 当然MCU也可以外扩 MPU的电路设计相对MCU较
  • powerbuilder9 窗口高级配置

    一 无标题栏 办法 xff1a 把窗口类型配置成response或者popup xff0c 窗口属性中的titlebar属性就变成可以选择 xff0c 把titlebar属性的勾点掉 xff0c 就可以配置成无标题栏 xff0c main类
  • Adaptive AUTOSAR——Cryptography (VRTE3.0 R21-11)

    Cryptography模块是用于自适应汽车软件架构的密码学模块 xff0c 主要用于实现各种安全功能 xff0c 包括加密 解密 签名和验证 等操作 它的主要作用包括 xff1a 安全通信 xff1a 使用各种算法对数据进行加密和解密 x
  • 一文读懂AUTOSAR SecOC通讯

    为什么用SecOC 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的业务需要 xff
  • 汽车操作系统的趋势

    操作系统 OS 需要管理基于计算机的系统的所有硬件和软件 xff0c 并且是汽车行业的关键软件平台 本文侧重于提供教程信息和汽车操作系统策略的一些观点 每个操作系统在功能 程序大小 复杂性 开发工作和硬件要求以及生命周期维护 支持工作和成本
  • 4.5.2 DDS

    1 标准及发展简介 DDS 的全称为 Data Distribution Service xff08 数据分发服务 xff0c 是由 OMG 联盟在 2004 年发布的中间件协议和应用程序接口标准 采用发布 订阅模型 xff0c 提供丰富的
  • SOA协议DDS和Some/IP对比

    SOME IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中 SOME IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术 xff0c 所以它们之间注定有很大的区别 SOME IP SOME IP的全称为 xff1a Sc
  • linux内核提高系统实时性,Linux操作系统实时性分析及改进策略

    摘要 xff1a 实时操作系统要求具有速度快和可预测性的特点 xff0c 必须保证实时任务在要求的时间内完成 本文在分析Linux操作系统的中断方式和进程调度等影响实时性的因素后 xff0c 对Linux的实时性策略进行改进 xff0c 提
  • switch ... case语句的用法

    当情况大于或等于4种的时候就用switch case语句 switch xff08 表达式 xff09 case 常量1 xff1a 语句体1 xff1b case 常量2 xff1a 语句体2 xff1b case 常量3 xff1a 语
  • 什么是eNodeB?eNodeB有什么主要功能?eNodeB与2G、3G的基站有什么区别?

    答 xff1a eNodeB xff08 简称为eNB xff09 是LTE网络中的无线基站 xff0c 也是LTE无线接入网的唯一网元 xff0c 负责空中接口相关的所有功能 xff1a xff08 1 xff09 无线链路维护功能 xf
  • 最优传输-ML实战

    在正文开始之前 xff0c 我们先举一个例子 xff1a Equations A 1
  • 最优传输-Sinkhorn算法(第九篇)

    最优传输系列是基于Computational Optimal Transport开源书的读书笔记 Sinkhorn算法 在上一篇里 xff0c 我们介绍了加入熵正则化的最优传输问题 熵正则化通过限制最优传输问题解的复杂度 xff0c 可以以
  • oracle表对表的多行更新

    oracle并没有update from 这个写法 所以在从一个表将数据更新到另外一个表时 xff0c 无法使用update from写法 xff0c 尤其是需要多行更新时 xff0c 最好使用merge into merge into允许
  • 一图理解M0不同优先级中断及Pendsv切换

  • 纽约客封面故事:欢迎来到「黑暗工厂」,这里是由机器统治的世界

    来源 The New Yorker 作者 Sheelah Kolhatkar 编译 编辑部 大急流城 xff0c Steelcase 的 人肉机器人 1977 年 xff0c 在密歇根州大急流城 xff0c 当 David Stinson
  • 先读懂CapsNet架构然后用TensorFlow实现:全面解析Hinton的提出的Capsule

    上周 Geoffrey Hinton 等人公开了那篇备受关注的 NIPS 论文 xff0c 而后很多研究者与开发者都阅读了该论文并作出了一定的代码实现 机器之心在本文中将详细解释该论文提出的结构与过程 xff0c 并借助 GitHub 上热
  • Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

    近日 xff0c Artur Suilin 等人发布了 Kaggle 网站流量时序预测竞赛第一名的详细解决方案 他们不仅公开了所有的实现代码 xff0c 同时还详细解释了实现的模型与经验 机器之心简要介绍了他们所实现的模型与经验 xff0c

随机推荐

  • 使用Keras快速构建集成卷积网络模型

    在统计学和机器学习领域 xff0c 集成方法 xff08 ensemble method xff09 使用多种学习算法以获得更好的预测性能 xff08 相比单独使用其中任何一种算法 xff09 和统计力学中的统计集成 xff08 通常是无穷
  • 半监督学习在图像分类上的基本工作方式

    本文回顾了一些常见的半监督算法 xff0c 随后介绍了作者在 NIPS 2017 展示的 Mean Teacher 项目 Mean Teacher 的论文地址 xff1a https arxiv org abs 1703 01780 xff
  • 经典必读:门控循环单元(GRU)的基本概念与原理

    LSTM 通过门控机制使循环神经网络不仅能记忆过去的信息 xff0c 同时还能选择性地忘记一些不重要的信息而对长期语境等关系进行建模 xff0c 而 GRU 基于这样的想法在保留长期序列信息下减少梯度消失问题 本文介绍了 GRU 门控机制的
  • 斯坦福完全可解释深度神经网络:你需要用决策树搞点事

    近日 xff0c 斯坦福大学计算机科学博士生 Mike Wu 发表博客介绍了他对深度神经网络可解释性的探索 xff0c 主要提到了树正则化 其论文 Beyond Sparsity Tree Regularization of Deep Mo
  • 使用AMD CPU,打造自己的深度学习服务器

    本文作者详细描述了自己组装深度学习服务器的过程 xff0c 从 CPU GPU 主板 电源 机箱等的选取到部件的安装 xff0c 再到服务器的设置 xff0c 可谓面面俱到 作者指出 xff0c 组装者首先要弄清自己的需求 xff0c 然后
  • 神经网络中的偏置项b到底是什么?

    前言 很多人不明白为什么要在神经网络 逻辑回归中要在样本X的最前面加一个1 xff0c 使得 X 61 x1 x2 xn 变成 X 61 1 x1 x2 xn 因此可能会犯各种错误 xff0c 比如漏了这个1 xff0c 或者错误的将这个1
  • java桌面显示出错,显示占半边,显绿色。

    这个错误 xff0c 确实很奇怪 而且只发生在java桌面程序上 xff0c 其他程序都正常 原因 xff1a 是远程桌面连接时 xff0c 显示质量位数太低 xff0c 是16位的 xff0c 所以出错 xff0c 改为最高质量32位就好
  • 给美队设计车的老爷爷设计了一辆自动驾驶赛车,还完成了全球首次爬坡赛

    在刚刚结束的英格兰赛车爬坡比赛Goodwood Festival of Speed上 xff0c Roborace生产的自动驾驶车Robocar成为了史上首辆完成爬坡赛的自动驾驶车 爬坡赛是一项传统赛车运动 xff0c 而在每年六月底七月初
  • 哈佛大学提出变分注意力:用VAE重建注意力机制

    注意力 attention 模型在神经网络中被广泛应用 xff0c 不过注意力机制一般是决定性的而非随机变量 来自哈佛大学的研究人员提出了将注意力建模成隐变量 xff0c 应用变分自编码器 xff08 Variational Auto En
  • 助力自动驾驶商业化 高德公布高精地图技术路线图

    在以 驶向未来 为主题的汽车专场论坛上 xff0c 高德地图首次对外界展示了基于高精地图和高精定位的一体化解决方案的实际定位效果 xff0c 并宣布了未来高德在高精地图技术上的发展路线图 助力自动驾驶商业化 高德公布高精地图技术路线图 7
  • 消息队列技术点梳理(思维导图版)

    消息队列作为服务 应用之间的通信中间件 xff0c 可以起到业务耦合 广播消息 保证最终一致性以及错峰流控 xff08 克服短板瓶颈 xff09 等作用 本文不打算详细深入讲解消息队列 xff0c 而是体系化的梳理消息队列可能涉及的技术点
  • (1)XTDrone环境配置笔记——从安装VMware开始

    本笔记主要参考文章 xff1a https www yuque com xtdrone manual cn basic config 2qN28 自己整理 xff0c 从个人笔记中移植过来 xff0c 如有问题 xff0c 欢迎讨论 目录
  • 编译android7.1源码环境的配置以及中途可能出现问题的总结

    在项目要求将apk文件打包到安卓系统7 1出了一大堆问题 xff0c 由于我是windows10系统 xff0c 所以在电脑上装了个virtualbox虚拟机 xff0c 并且装上了ubuntu 18 04 2 接下来就是在这个虚拟机系统上
  • Ubuntu 创建开机自启动脚本

    由于在ubuntu上面跑了很多服务 xff0c 每次开机都需要自己手动去启动服务太麻烦 下面记录一下开机自启动脚本的编写 xff0c 以便往后查阅 1 适用系统Ubuntu18 ubuntu20 2 切换到etc目录 cd etc 3 创建
  • 关于合法的出栈顺序

    可以按照下面的方法来判断的 xff1a 假如入栈顺序为1234 xff0c 给定一个出栈序列 xff0c 如2431 xff0c 它是合法的 因为对于出栈序列中的每一个数字 xff0c 在它后面的 比它小的所有数字 xff0c 一定是按递减
  • 增量测试:自顶向下测试&自底向上测试

    本博客主要内容 xff1a 自顶向下测试和自底向上测试的优缺点 xff1b 软件开发周期流程 xff1b 不同的测试方法针对不同的测试阶段 一 自顶向下测试 xff1a 优点 xff1a 1 如果主要的缺陷发生在程序的顶层将非常有利 2 一
  • 局域网 Ubuntu 16.04.4 安装 Docker 18.06.0-ce 笔记

    局域网内搭建Ubuntu环境下的Docker Engine 17 06 0 43 Docker Compose 1 14 0 43 的环境运行项目 网上查找到很多方法 xff0c 但是安装总有报错 解决报错办法 xff1a 一 下载了doc
  • oracle监听器日志过大-处理办法

    原则是lsnrctl status xff0c 找到日志文件位置 xff0c 就是给你看的那些信息中的log file xff0c 删除即可 但是监听器在运行状态下 xff0c 无法删除 办法1 xff1a 将监听器stop xff0c 然
  • 网络——IPV4地址(二)

    划分子网的IPv4地址 在IP地址中增加一个 子网号字段 xff0c 使得两级IP地址变成三级IP地址 这种做法称为子网划分 三级IP地址结构如下 xff1a IP地址 61 lt 网络号 gt lt 子网号 gt lt 主机号 gt 子网
  • 创建一个基于WebPacket的TypeScript项目【一】

    创建一个基于WebPacket的TypeScript项目 安装node js环境建立目录结构在 96 templates 96 目录新建 96 template index html 96 并写入 安装VSCode创建一个NPM项目确认 安