Rumah >hujung hadapan web >tutorial js >FiveM x TypeScript

FiveM x TypeScript

王林
王林asal
2024-09-08 22:30:40504semak imbas

FiveM x TypeScript

FiveM adalah pengubahsuaian untuk Grand Theft Auto V yang membolehkan anda bermain berbilang pemain pada pelayan khusus tersuai, dikuasakan oleh Cfx.re.

Apabila anda membangunkan pelayan FiveM, anda boleh mencipta sumber. Sumber-sumber ini boleh ditulis dalam pelbagai bahasa Lua, C# dan JavaScript. Dalam artikel ini kita akan melihat cara membina sumber menggunakan TypeScript

Jenis :

Untuk menaip kod kami, kami akan menggunakan dua pakej yang disediakan oleh CFX.re syarikat di belakang FiveM

  • @citizenfx/klien
  • @citizenfx/server

Pakej ini menyediakan jenis untuk setiap kaedah asli yang boleh digunakan dalam kod sebelah klien atau sebelah pelayan.

tsconfig.json

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "Bundler",
    // Location
    "outDir": "./dist",
    // Other
    "types": ["@citizenfx/client", "@types/node"],
    "lib": ["ES2020"],
    "strict": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "skipLibCheck": true
  },
  "include": ["src/**/*.ts"],
  "exclude": ["**/node_modules", "**/.test.ts"]
}

Himpunan :

Selepas penyusunan fail .ts, anda perlu mencipta satu berkas yang akan dimuatkan dan dijalankan oleh pelayan FiveM. Sesungguhnya, FiveM hanya membenarkan keperluan pakej node.js asli seperti laluan, fs, …

Untuk melakukannya, kami menggunakan alat bernama rollup, ia adalah pengikat modul JavaScript berdasarkan sistem pemalam. Saya juga meneroka alat lain seperti vite, rspack, tetapi ia terlalu rumit. Alat lain yang menawarkan prestasi yang baik ialah turbopack alat di belakang himpunan seterusnya tetapi ia masih di dalam sebelah buat masa ini.

rollup.config.mjs

import typescript from "@rollup/plugin-typescript";
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";

export default {
  input: "src/index.ts",
  output: {
    dir: "dist",
    format: "cjs",
    sourcemap: false,
  },
  plugins: [resolve(), typescript(), commonjs()],
};

pakej.json :

{
  ...
  "devDependencies": {
    "@citizenfx/client": "2.0.9282-1",
    "@rollup/plugin-commonjs": "^26.0.1",
    "@rollup/plugin-node-resolve": "^15.2.3",
    "@rollup/plugin-typescript": "^11.1.6",
    "@types/node": "^20.14.12",
    "rollup": "^4.20.0",
    "tslib": "^2.6.3",
    "typescript": "^5.5.4"
  },
  ...
}

Contoh

init.ts

import { join } from "path"

export const init = () => {
    console.log("inited", join(".", "init.js"));
}

index.ts

import { init } from "./init"

on("onResourceStart", async (resName: string) => {
  if (resName === GetCurrentResourceName()) {
    init();
  }
});

Selepas menjalankan rollup -c, anda hanya akan mempunyai satu fail :

'use strict';

var path = require('path');

const init = () => {
    console.log("inited", path.join(".", "init.js"));
};

on("onResourceStart", async (resName) => {
    if (resName === GetCurrentResourceName()) {
        init();
    }
});

Atas ialah kandungan terperinci FiveM x TypeScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn