對 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 捆綁所花費的時間。這次還包括下載任何遠端模組。