开发typescript项目有一些现成的脚手架,比如:typescript-library-starter,它的配置齐全,更适合用在实际项目开发上。其实在学习阶段可以自己搭建一个简单的typescript运行环境,只用作学习typescript语法。

初始化项目

依次执行:

mkdir ts-learn-demo

cd ts-learn-demo

npm init -y

然后全局安装 typescript,便于在任意文件夹使用 tsc 命令:

// 安装失败的话请以管理员身份运行,此处是sudo命令是mac上管理员权限
sudo npm install typescript -g

安装成功后进入项目根目录,使用 tsc 命令进行初始化:

tsc --init

此时项目根目录里多了一个 tsconfig.json 文件,它的配置信息参考:https://www.tslang.cn/docs/handbook/tsconfig-json.html

在项目里安装 typescript,注意这一次不是全局安装,全局安装是为了tsc命令,这里是为了本地编译和开发

npm install typescript

配置TSLint(可选)

类似ESLint,统一代码风格,全局安装TSLint:

sudo npm install tslint -g

然后在项目中初始化:

tslint -i

此时项目目录中会多一个 tslint.json 文件,关于它的配置可自行百度,在学习阶段默认的配置即可。

配置webpack

使用webpack进来开发和打包,先安装一些必要的插件:

npm install webpack webpack-cli webpack-dev-server -D

npm install html-webpack-plugin clean-webpack-plugin -D

npm install ts-loader -D

在项目根目录创建 webpack.config.js 文件:

const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin') module.exports = {
entry: './src/index.ts',
output: {
filename: 'main.js'
},
resolve: {
extensions: ['.js', 'ts', 'tsx']
},
module: {
// 配置以.ts/.tsx结尾的文件都用ts-loader解析
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
devtool: process.env.NODE_ENV === 'production' ? false : 'inline-source-map',
devServer: {
contentBase: './dist',
stats: 'errors-only',
compress: false,
host: 'localhost',
port:
},
plugins: [
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: ['./dist']
}),
new HtmlWebpackPlugin({
template: './src/template/index.html'
})
]
}

上述webpack配置信息中可知,项目源码放在 src 目录下,入口文件是 ./src/index.ts 。接下来还要创建模板html文件,在 ./src/template目录下创建index.html模板:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>TS Demo</title>
</head>
<body></body>
</html>

目录结构如下:

开发和打包

webpack配置文件已经写好,接下来只要写好script命令就可以轻松开发了。在package.json文件中指定命令:

// start 是启动本地开发
// build是打包
"scripts": {
"start": "cross-env NODE_ENV=development webpack-dev-server --mode=development --config webpack.config.js",
"build": "cross-env NODE_ENV=production webpack --mode=production --config webpack.config.js"
},

注意到命令里有一个 cross-env,这个是指定当前环境变量的,需要安装一下:

npm install cross-env

好了,现在在index.ts随便写一些ts代码测试一下:

// ./src/index.ts

let str: string = 'hello world'

document.write(str)

本地启动服务执行:

npm start

打包执行:

npm run build

结尾

此typescript运行环境只是简单的做到可执行ts文件,还有很多不足之处,在学习typescript的同时,可以再慢慢改善。

尝试自己搭一个简单的typescript运行环境的更多相关文章

  1. 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...

  2. VS Extension+NVelocity系列(一)——构建一个简单的NVelocity解析环境

    一.前言 本节我们将实际实现一个简单的NVelocity解析环境,以便为以后的实例做一些基本工作,虽然NVelocity如何使用已经属于老掉牙的话题,但我只能专门挑出来一章来做铺垫.人生就是这样无奈啊 ...

  3. 手把手制作一个简单的IDEA插件(环境搭建Demo篇)

    新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...

  4. webpack 之 一个简单的基本生产环境配置

    webpack 之 一个简单的基本生产环境配置 // 用来拼接绝对路径的方法 const {resolve} = require('path') const HtmlWebpackPlugin = r ...

  5. 通过命令验证docker容器相当一个轻量级的Linux运行环境,且每个容器内都有一个属于自己的文件系统,容器之间相互隔离

    一.docker的三个重要概念 1.镜像:打包项目带上环境,即镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的配置参数.镜像 ...

  6. 由一个简单需求到Linux环境下的syslog、unix domain socket

    本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参 ...

  7. iBatis第二章:搭建一个简单的iBatis开发环境

    使用 iBatis 框架开发的基本步骤如下:1.新建项目(iBatis是持久层框架,可以运用到java工程或者web工程都可以) 这里我们建立一个 web 工程测试. 2.导入相应的框架 jar 包 ...

  8. 带你搭一个SpringBoot+SpringData JPA的环境

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Da ...

  9. [Py] 简单的 Python 运行环境

    python:https://www.python.org/downloads/ pip:https://pip.pypa.io/en/stable/installing/#upgrading-pip ...

随机推荐

  1. LOJ #2734 Luogu P3615 [JOI2016春季合宿]Toilets (结论、贪心)

    题目链接 (loj) https://loj.ac/problem/2734 (luogu) https://www.luogu.org/problem/P3615 题解 嗯,考场上肝了\(3h\)然 ...

  2. VMWare workstation12配置CentOS6.5虚拟机NAT网络以及虚拟机静态IP

    1.右键网络连接—>打开网络和共享中心—>更改适配器设置—>找到网络适配器VMware Virtual Ethernet Adapter for VMnet8—>如下图所示修改 ...

  3. C++入门经典-例6.22-字符串与数组,string类型的数组

    1:数组中存储的数据也可以是string类型的.代码如下: // 6.22.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...

  4. win7配置flutter报错 运行flutter doctor报错及解决方法

    先按照官方文档进行配置 win10下按照flutter官方文档进行部署flutter 基本没有任何问题 win7情况下 按照官方文档操作后 前面也都可以正常进行 直到 win7下运行flutter d ...

  5. 注意机制CBAM

    这是一种用于前馈卷积神经网络的简单而有效的注意模块. 给定一个中间特征图,我们的模块会沿着两个独立的维度(通道和空间)依次推断注意力图,然后将注意力图乘以输入特征图以进行自适应特征修饰. 由于CBAM ...

  6. OGG-00446 分析与解决

    OGG-00446 分析与解决 Table of Contents 1. 00446 1.1. Missing filename opening checkpoint file 1.1.1. 错误信息 ...

  7. react-native命令初始化项目后可借助webstrom快速运行与调试项目

    利用webstorm工具打开RN项目,点击 然后添加 然后进行配置 最后,点击apply ,OK完成 后期运行项目直接点击:

  8. OpenStack 高性能虚拟机之大页内存

    目录 文章目录 目录 前文列表 虚拟存储器系统 页式虚拟存储器 大页内存 Linux 的大页内存 大页的实现原理 大页内存配置 透明巨型页 THP 大页面对内存的影响 Nova 虚拟机的大页内存设置 ...

  9. ts-loader如何与vue单文件组件衔接

    .ts-loader是如何与vue单文件组件衔接作用的 https://github.com/microsoft/TypeScript-Vue-Starter https://www.npmjs.co ...

  10. Java语言实现 Base64 加密 & 解密

    Java语言实现 Base64 加密 & 解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64 ...