0. 简单搭建一个 ts 开发模板

全局 typescript 编译TS文件

npm install typescript -g

全局安装typescript可以对.ts文件进行编译

  • tsc --init # 生成tsconfig.json
  • tsc # 可以将ts文件编译成js文件
  • tsc --watch # 监控ts文件变化生成js文件

搭建ts开发模板

目录结构:

├── build
├── src
│   └── index.ts
├── public
│   └── index.html
├── rollup.config.js // rollup 打包配置文件
├── package.json
└── tsconfig.json // ts 打包配置文件  通过: npx tsc --init  生成

通过 rollup 编译 .ts 文件比 webpack 快, 所以才有 rollup

npm install rollup typescript rollup-plugin-typescript2 @rollup/plugin-node-resolve rollup-plugin-serve -D

package.json

{
  "name": "typescript-learn",
  "version": "1.0.0",
  "description": "TypeScript",
  "main": "dist/index.js",
  "scripts": {
    "dev": "rollup -c -w"
  },
  "devDependencies": {
    "@rollup/plugin-node-resolve": "^13.0.6",
    "rollup": "^2.58.3",
    "rollup-plugin-serve": "^1.1.0",
    "rollup-plugin-typescript2": "^0.30.0",
    "typescript": "^4.4.4"
  }
}

tsconfig.json

{
  "compilerOptions": {
	  "target": "es2020",
	  "module": "ESNext",
	  "sourceMap": true,
	  "esModuleInterop": true,
	  "forceConsistentCasingInFileNames": true,
	  "strict": true,
	  "skipLibCheck": true
  }
}

rollup.config.js

import path from 'path'
import serve from 'rollup-plugin-serve'
import ts from 'rollup-plugin-typescript2'
import { nodeResolve } from '@rollup/plugin-node-resolve'

export default {
  input: 'src/index.ts', // 打包入口
  output: {
    format: 'iife',
    file: path.resolve('dist/index.js'), // 打包出口
    sourcemap: true
  },
  plugins: [
    nodeResolve({ // Rollup 插件,用于在 node_modules 中使用第三方模块
      extensions: [ '.js', '.ts' ]
    }),
    ts({   // ts 打包配置
      tsconfig: path.resolve(__dirname, 'tsconfig.json')
    }),
    serve({ // rollup 开启端口服务
      open: true,
      openPage: '/public/index.html',
      port: 3000,
      contentBase: ''
    })
  ]
}

public\index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script src="../dist/index.js"></script>
</body>
</html>

打包

src\index.ts

入口文件如下

let myname: string = "小米";
let age: number = 18;
let bool: boolean = true;

console.log(myname, age)

执行 npm run dev 打包后的结果如下

dist\index.js

(function () {
	'use strict';

	let myname = "小米";
	let age = 18;
	console.log(myname, age);

})();
//# sourceMappingURL=index.js.map

很明显,没用到的代码被自动 tree-shaking 掉了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值