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, 번들러, 빌드 단계 등이 필요하지 않습니다.
최신 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 바이너리를 다운로드할 수 있습니다. 사전 빌드된 k6 Docker 이미지는 패키지 페이지를 확인하세요.
xk6 빌드 도구를 사용하여 xk6-faker 확장을 포함하는 k6을 빌드할 수 있습니다.
$ xk6 build --with github.com/szkiba/xk6-ts@latest
더 많은 빌드 옵션과 xk6 사용 방법은 xk6 설명서를 확인하세요.
내부적으로 xk6-ts는 트랜스파일 및 번들링을 위해 esbuild 라이브러리를 사용합니다. 정확하게 말하면 xk6-ts는 esbuild를 기반으로 하는 k6pack 라이브러리를 사용합니다.
테스트 실행 전에 변환 및 번들링이 즉시 수행됩니다.
xk6-ts는 현재 k6 run
명령의 실행을 수정하여 k6에 통합되었습니다. 이는 임시 해결책이므로 최종 통합은 다른 방식으로 수행됩니다. 이 임시 통합은 k6 run
명령줄의 마지막 인수가 스크립트 파일의 이름이라고 가정합니다. 즉, 원래 k6 run
명령줄이 작동하는 방식과 달리 xk6-ts는 스크립트 파일 이름 뒤에 플래그를 허용하지 않습니다. 그건 그렇고, 이 가정은 드문 일이 아니며 다른 많은 명령은 위치 인수 앞에 플래그만 허용합니다. (원래 k6 run
명령은 위치 인수 뒤에 플래그도 허용합니다).
XK6_TS_BENCHMARK
환경 변수를 true
로 설정하면 TypeScript/JavaScript 번들링에 소요된 시간이 기록됩니다. 이 시간에는 원격 모듈 다운로드도 포함됩니다.