30分钟搞懂Rollup+Typescript工程构建(二)

简介: 在本文中不讨论Typescript的具体用法,我们将学习如何将Typescript代码转为JavaScript。

Typescript


在本文中不讨论Typescript的具体用法,我们将学习如何将Typescript代码转为JavaScript。


如何将一个Typescript代码转义为JavaScript呢?Typescript本身提供了一个工具typescript,因此我们针对其来学习一番。


如何使用typescript呢? 可以到官网TypeScript使用说明文档


我们这里简单总结一下,在项目中使用Typescript,构建工具一般有以下几个步骤:

  • npm install typescript -D 安装Typescript工具
  • npm install @babel/core -D 结合babel对Typescript进行转义
  • 配置文件tsconfig.json,配置一些Typescript编译功能
  • npm install eslint -D,结合eslint对代码语法做检测
  • 配置文件eslint.json,配置代码检测标准

tsconfig.json


tsconfig.json一般是放到项目根目录,如果放到其他目录,需要修改对应地址, 配置文件主要几个部分:

  • compilerOptions 编译时的一些配置内容
  • watchOptions 当监听文件变化时候需要配置一些内容
  • include 哪些文件需要编译,如:"include": ["src/**/*", "tests/**/*"]
  • exclude 对某些文件进行忽略,不做编译,如:"exclude": ["src/js/*"]
  • extends 继承其他配置文件,如:"extends": ["./base.json"]


目前我们主要使用的还是compilerOptions,里面主要的配置项有:

  • paths 将部分路径进行缩写,比如:"@App/*": ["src/*"],后续使用@App,就会解析成src
  • target 代码转义哪个ES标准下,如:ES2017,ES2018,ES2019等
  • module 代码模块化遵循哪个标准,如:ESNext,CommonJS等
  • strict 是否使用严格模式检测代码质量
  • lib 编译的有时候需要依赖一些全局变量,比如:Document对象,这个时候需要设置为DOM,或者使用Map对象,这个时候需要ESNext
  • declaration 是否给每个文件都生成 声明文件.d.ts
  • noImplicitOverride 设置后可以提醒继承类override同名方法时候,需要标注override关键字
  • noUnusedLocals 不允许有未使用的变量
  • esModuleInterop 可以修复由于ES规范和其他规范混合使用导致的引用错误
  • useUnknownInCatchVariables 支持catch中error设置为Unknown类型
  • resolveJsonModule 支持json文件引入为一个模块


RollupTypescript都有一定了解后,接下来我们就来实战Rollup+Typescript工程化项目。

实战


1.初始化项目 新建一个文件夹demo-rollup,后续命令如下:

mkdir demo-rollup
npm init

2.安装依赖

  • 安装rollup相关依赖
pnpm add rollup -D
  • 安装Typescript相关依赖
pnpm add typescript tslib -D
  • 安装babel
pnpm add @babel/core @babel/preset-env @babel/plugin-proposal-class-properties -D
  • 安装rollup相关插件
pnpm add @rollup/plugin-babel -D #babel插件
pnpm add @rollup/plugin-commonjs -D #转成commonjs的插件
pnpm add rollup-plugin-typescript2 -D #typescript插件
  • 安装其他依赖
pnpm add rimraf -D

3.配置rollup.config.js

import typescript from 'rollup-plugin-typescript2'; // 处理typescript
import babel from '@rollup/plugin-babel';
export default [
    {
        input: 'src/index.ts',
        plugins: [
            typescript(), // typescript 转义
            babel({
                babelrc: false,
                presets: [['@babel/preset-env', { modules: false, loose: true }]],
                plugins: [['@babel/plugin-proposal-class-properties', { loose: true }]],
                exclude: 'node_modules/**',
            })
        ],
        output: [
            { file: 'dist/index.js', format: 'cjs' },
            { file: 'dist/index.esm.js', format: 'es' }
        ]
    }
];

4.配置tsconfig.json

{
  "include": ["./src/*"],
  "compilerOptions": {
    "target": "ES2019",
    "module": "ESNext",
    "moduleResolution": "node",
    "strict": true,
    "esModuleInterop": true,
    "noImplicitOverride": true,
    "noUnusedLocals": true,
    "resolveJsonModule": true,
    "useUnknownInCatchVariables": false,
    "typeRoots": ["./types", "./node_modules/@types"]
  },
  "types": ["jest"]
}

5.配置package.json

添加dev和build命令脚本,如下所示:

{
  ...
  "main": "dist/index.js",
  "type": "module", // rollup新增的配置项
  "scripts": {
    "dev": "rimraf dist && rollup -c rollup.config.ts -w",
    "build": "rimraf dist && rollup -c rollup.config.ts"
  },
  ...
}

6.编写demo代码

// sum.ts
export default function sum(a: number, b:number){
  return a+b;
}
// index.ts
import sum from './sum';
console.log(sum(1, 2));
export default {
    sum
}

7.测试运行

pnpm run dev
pnpm run build

查看生成dist/index.jsdist/index.esm.js

完整项目源码地址:demo-rollup

目录
相关文章
|
6月前
|
自然语言处理 JavaScript 前端开发
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
|
5月前
|
缓存 JavaScript 前端开发
探讨如何通过一系列优化策略来提升TypeScript与Webpack的构建性能。
【6月更文挑战第11天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。通过这些方法,可以提升构建速度,提高开发效率。
79 0
|
6月前
|
JavaScript 前端开发 应用服务中间件
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(2)
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(2)
|
6月前
|
监控 JavaScript 数据挖掘
TypeScript代码示例:构建灵活可扩展的员工上网管控平台
使用TypeScript构建的员工上网监控平台示例展示了如何通过`InternetMonitoringPlatform`类实现实时监控、数据分析和数据自动提交。类包含`monitorInternetActivity`用于监控行为,`analyzeData`用于分析数据,`autoSubmitToWebsite`借助axios库将数据POST到网站。此平台旨在提高企业安全性和效率。
160 3
|
6月前
|
缓存 JavaScript 前端开发
【TypeScript技术专栏】TypeScript与Webpack构建优化
【4月更文挑战第30天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(关闭不必要的类型检查,适配目标环境)和webpack.config.js(配置entry、output、resolve,使用压缩插件)。启用Webpack缓存和增量构建,利用代码拆分与懒加载,能有效提升构建速度和开发效率。
87 0
|
6月前
|
JavaScript 前端开发 编译器
TypeScript的编译器、编辑器支持与工具链:构建高效开发环境的秘密武器
【4月更文挑战第23天】TypeScript的强大力量源于其编译器、编辑器支持和工具链,它们打造了高效的开发环境。编译器`tsc`进行类型检查、语法分析和代码转换;编辑器如VS Code提供智能提示、错误检查和格式化;工具链包括Webpack、Rollup等构建工具,Jest、Mocha等测试框架,以及代码质量和性能分析工具。这些组合使用能提升开发效率、保证代码质量和优化项目性能。
|
6月前
|
前端开发 JavaScript 安全
使用React、TypeScript和Ant Design构建现代化前端应用
使用React、TypeScript和Ant Design构建现代化前端应用
185 0
|
6月前
|
JavaScript 安全 容器
Vue3 + setup + TypeScript: 构建现代、类型安全的Vue应用的关键技巧总结
当使用 setup 的时候,组件直接引入就可以了,不需要再自己手动注册
|
6月前
|
JavaScript 前端开发 开发工具
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(3)
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(3)
|
JavaScript 前端开发 编译器
🎖️使用 esbuild 简化 TypeScript 构建并跳过 tsc/tsx
JavaScript 生态系统一直在不断创新,最近的一位游戏规则改变者是 esbuild,这是一个极速的 JavaScript 和 TypeScript 打包器。
1027 0