对 k6 的 TypeScript 支持
xk6-ts 使 TypeScript 成为 k6 中的一等公民。
k6 run script.ts
import { User , newUser } from "./user" ;
export default ( ) => {
const user : User = newUser ( "John" ) ;
console . log ( user ) ;
} ;
interface User {
name : string ;
id : number ;
}
class UserAccount implements User {
name : string ;
id : number ;
constructor ( name : string ) {
this . name = name ;
this . id = Math . floor ( Math . random ( ) * Number . MAX_SAFE_INTEGER ) ;
}
}
function newUser ( name : string ) : User {
return new UserAccount ( name ) ;
}
export { User , newUser } ;
就是这样。用 TypeScript 编写的测试可以直接使用 k6 运行。不需要 Node.js、babel、webpack、bundler、构建步骤等。
您是否认为现代 JavaScript 功能使 TypeScript 变得毫无意义? xk6-ts 还可用于支持 k6 中的现代 JavaScript 功能。
k6 run script.js
import { newUser } from "./user" ;
export default ( ) => {
const user = newUser ( "John" ) ;
console . log ( user ) ;
} ;
可以通过将XK6_TS
环境变量设置为false
来禁用 xk6-ts。
为了确保运行时错误消息报告正确的源代码位置,默认情况下启用源映射生成。否则,由于转译和捆绑,源代码位置毫无意义。可以通过将XK6_TS_SOURCEMAP
环境变量的值设置为false
来禁用源映射生成。
TypeScript 语言支持
k6 run script.ts
远程 (https) TypeScript/JavaScript 模块支持
import { User } from 'https://example.com/user.ts'
console . log ( new User ( ) )
将 JSON 文件作为 JavaScript 对象导入
import object from './example.json'
console . log ( object )
将文本文件作为 JavaScript 字符串导入
import string from './example.txt'
console . log ( string )
混合搭配 JavaScript 和 TypeScript
您可以从发布页面下载预构建的 k6 二进制文件。检查 Packages 页面以获取预构建的 k6 Docker 映像。
xk6 构建工具可用于构建包含 xk6-faker 扩展的 k6:
$ xk6 build --with github.com/szkiba/xk6-ts@latest
有关更多构建选项以及如何使用 xk6,请查看 xk6 文档。
在底层,xk6-ts 使用 esbuild 库进行转译和捆绑。准确来说,xk6-ts 使用的是 k6pack 库,该库基于 esbuild。
在测试运行之前,转译和捆绑是即时完成的。
xk6-ts 目前通过修改k6 run
命令的执行方式集成到 k6 中。这是一个临时解决方案,最终的集成将以不同的方式完成。此临时集成假设k6 run
命令行的最后一个参数是脚本文件的名称。也就是说,与原始k6 run
命令行的工作方式相反,xk6-ts 不接受脚本文件名后面的标志。顺便说一句,这种假设并不罕见,许多其他命令只接受位置参数之前的标志。 (原始的k6 run
命令也接受位置参数后面的标志)。
将XK6_TS_BENCHMARK
环境变量设置为true
将记录 TypeScript/JavaScript 捆绑所花费的时间。这次还包括下载任何远程模块。