Prise en charge de TypeScript pour k6
xk6-ts fait de TypeScript un citoyen de premier ordre dans 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 } ;
C'est ça. Un test écrit en TypeScript peut être exécuté directement avec k6. Pas besoin de Node.js, babel, webpack, bundler, étape de build, etc.
Pensez-vous que les fonctionnalités JavaScript modernes rendent TypeScript inutile ? xk6-ts peut également être utilisé pour prendre en charge les fonctionnalités JavaScript modernes dans k6.
k6 run script.js
import { newUser } from "./user" ;
export default ( ) => {
const user = newUser ( "John" ) ;
console . log ( user ) ;
} ;
xk6-ts peut être désactivé en définissant la variable d'environnement XK6_TS
sur false
.
Pour garantir que les messages d'erreur d'exécution signalent la position correcte du code source, la génération de sourcemap est activée par défaut. Sinon, en raison de la transpilation et du regroupement, la position du code source n'a aucun sens. La génération de sourcemap peut être désactivée en définissant la valeur de la variable d'environnement XK6_TS_SOURCEMAP
sur false
.
Prise en charge du langage TypeScript
k6 run script.ts
prise en charge du module TypeScript/JavaScript à distance (https)
import { User } from 'https://example.com/user.ts'
console . log ( new User ( ) )
importer des fichiers JSON en tant qu'objet JavaScript
import object from './example.json'
console . log ( object )
importer des fichiers texte sous forme de chaîne JavaScript
import string from './example.txt'
console . log ( string )
mélanger et assortir JavaScript et TypeScript
Vous pouvez télécharger des binaires k6 prédéfinis à partir de la page Versions. Consultez la page Packages pour les images Docker k6 prédéfinies.
L'outil de construction xk6 peut être utilisé pour créer un k6 qui inclura l'extension xk6-faker :
$ xk6 build --with github.com/szkiba/xk6-ts@latest
Pour plus d'options de construction et comment utiliser xk6, consultez la documentation xk6.
Sous le capot, xk6-ts utilise la bibliothèque esbuild pour la transpilation et le regroupement. Pour être précis, xk6-ts utilise la bibliothèque k6pack, basée sur esbuild.
Avant le test, la transpilation et le regroupement sont effectués à la volée.
xk6-ts est actuellement intégré à k6 en modifiant l'exécution de la commande k6 run
. Il s'agit d'une solution temporaire, l'intégration finale se fera de manière différente. Cette intégration temporaire suppose que le dernier argument de la ligne de commande k6 run
est le nom du fichier de script. Autrement dit, contrairement à la façon dont fonctionne la ligne de commande k6 run
d'origine, xk6-ts n'accepte pas les indicateurs après le nom du fichier de script. Soit dit en passant, cette hypothèse n'est pas rare, de nombreuses autres commandes n'acceptent que les indicateurs avant les arguments de position. (la commande k6 run
d'origine accepte également les indicateurs après l'argument de position).
Définir la variable d'environnement XK6_TS_BENCHMARK
sur true
enregistrera le temps passé sur le regroupement TypeScript/JavaScript. Cette période inclut également le téléchargement des modules distants.